Lese piped stdout eines Programms am stdin meines Programms
Verfasst: 03.06.2014 21:41
Hallo Leute, ich bin neu hier und brauche mal eure Hilfe.
Ich habe bereits die Hilfe und ein paar tuts durch, ebenso
hier im Forum gesucht, aber nichts wirklich passendes gefunden....
Ich benutze PureBasic_Demo_5.22.exe auf Win7, 32-bit.
FRAGE
Ich würde gern eine Konsolenanwendung schreiben, welches an stdin von einer Pipe die Daten einliest, etwa so wie z.B. SED.
Beispiel:
C:\>dir /b *.txt | myapp.exe
(Zweites Problem: wenn am stdin nichts reinkommt, soll automatisch der dann hoffentlich übergebene Parameter eingelesen werden. Oder umgekehrt.)
C:\>myapp.exe test.txt
PROBLEM
Zur Zeit bekomme ich beim stdin nur ein paar Fragezeichen angezeigt:
C:\>echo example.txt | myapp.exe
Got: ?????4?
Das Einlesen des Inputs über einen Parameter funktioniert:
C:\>myapp.exe example.txt
Got: example.txt
CODE
Mein code sieht folgendermaßen aus:
(Die Logik zur Entscheidung; stdin oder parameter, fehlt mir noch)
Zum Vergleich
Mit VBS und Pascal konnte ich die Pipe lesen:
Aber bei PureBasic fehlt mir noch etwas?
Danke für eure Hilfe.
Read piped stdout from other app on stdin from my app
Ich habe bereits die Hilfe und ein paar tuts durch, ebenso
hier im Forum gesucht, aber nichts wirklich passendes gefunden....
Ich benutze PureBasic_Demo_5.22.exe auf Win7, 32-bit.
FRAGE
Ich würde gern eine Konsolenanwendung schreiben, welches an stdin von einer Pipe die Daten einliest, etwa so wie z.B. SED.
Beispiel:
C:\>dir /b *.txt | myapp.exe
(Zweites Problem: wenn am stdin nichts reinkommt, soll automatisch der dann hoffentlich übergebene Parameter eingelesen werden. Oder umgekehrt.)
C:\>myapp.exe test.txt
PROBLEM
Zur Zeit bekomme ich beim stdin nur ein paar Fragezeichen angezeigt:
C:\>echo example.txt | myapp.exe
Got: ?????4?
Das Einlesen des Inputs über einen Parameter funktioniert:
C:\>myapp.exe example.txt
Got: example.txt
CODE
Mein code sieht folgendermaßen aus:
(Die Logik zur Entscheidung; stdin oder parameter, fehlt mir noch)
Code: Alles auswählen
;OpenConsole() ; Wait for user input
;we execute this app already from a console window, we do not need to open one first.
If OpenConsole()
;sInput$ = ProgramParameter(0)
;Repeat
sInput$ = Input()
PrintN("Got as input: "+sInput$)
;Until (sInput$ = "" )
EndIf
End
Zum Vergleich
Mit VBS und Pascal konnte ich die Pipe lesen:
Code: Alles auswählen
begin
while not EOF do begin
ReadLn(sInFilename);
funcDoSomething( sInFilename, sOutputStr );
//WriteLn( sOutputStr + '_pipe-works' );
WriteLn( sOutputStr );
end;
end.
Aber bei PureBasic fehlt mir noch etwas?

Danke für eure Hilfe.
Read piped stdout from other app on stdin from my app