ich versuche gerade den outputstream einer Konsolenanwendung auszulesen und stoße da (nur unter Windows) auf folgenden Fehler:
Die letzten Zeichen der letzten Zeile fehlen und kommen erst, wenn irgendwann weitere Informationen im Buffer liegen. Mit der Option PipeBufferSize habe ich bereits rumgespielt und keine Verbesserung feststellen können.
Hier der Code, wie ich den Prozess starte:
Code: Alles auswählen
AsyncProcess1.Executable := 'path_to.exe';
AsyncProcess1.Options := AsyncProcess1.Options + [poUsePipes, poStderrToOutPut];
AsyncProcess1.Execute;
Code: Alles auswählen
procedure TForm1.AsyncProcess1ReadData(Sender: TObject);
var
sl: TStringList;
i : Integer;
begin
sl := TStringList.Create;
begin
sl.LoadFromStream(AsyncProcess1.Output);
for i := 0 to sl.Count - 1 do
Listbox1.Items.add(sl.Strings[i]);
end;
sl.Free;
end;
Grüße,
Nabbl
p.s.: Bei der EXE-Datei handelt es sich übrigens um den dedizierten Server des Spiels Soldat:
http://static.soldat.pl/downloads/solda ... _1.6.3.zip