2009-06-29 11 views
27

Ich versuche, eine Delphi-Konsolenanwendung zu schreiben, die einen TStream für seine Standardeingabe und einen anderen TStream für seine Standardausgabe erstellt.Öffnen eines TStream auf stdin/stdout in einer Delphi-Konsolenanwendung

(Es wird von einer Host-App gestartet, deren Ein- und Ausgabe zu Pipes umgeleitet wird und binäre Daten an diese Host-App übergeben werden. Daher ist TStream für die Task viel besser geeignet als ReadLn/WriteLn .)

Wie gehe ich vor, um einen TStream über Standardeingabe oder Standardausgabe zu öffnen?

Antwort

36

Aus der Spitze von meinem Kopf:

InputStream := THandleStream.Create(GetStdHandle(STD_INPUT_HANDLE)); 
    OutputStream := THandleStream.Create(GetStdHandle(STD_OUTPUT_HANDLE)); 

geben, dass ein gehen ..

+4

Und uns sagen, ob es funktioniert, bitte! –

+4

In der Tat, es ist sehr schön. Vielen Dank! –

+1

Beachten Sie, dass Sie die Windows-Einheit in Ihrer uses-Klausel für die GetStdHandle-Funktion benötigen. – Drarok

Verwandte Themen