[Erledigt] TAsyncProcess Pipeoutput unvollständig

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
nabbl
Beiträge: 4
Registriert: So 30. Jun 2013, 14:21

[Erledigt] TAsyncProcess Pipeoutput unvollständig

Beitrag von nabbl »

Moin miteinander,
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;   
und hier, wie ich ihn den Stream auf dem ReadData-Event auslese:

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; 
Ich hoffe, dass mir einer von Euch helfen kann!

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
Dateianhänge
miniTest.zip
Minimaler Test
(126.43 KiB) 52-mal heruntergeladen
Zuletzt geändert von nabbl am Fr 5. Jul 2013, 02:06, insgesamt 1-mal geändert.
Lazarus v. 1.0.10
Windows, Linux, MacOS X

nabbl
Beiträge: 4
Registriert: So 30. Jun 2013, 14:21

Re: TAsyncProcess Pipeoutput unvollständig

Beitrag von nabbl »

Hat sich herausgestellt, dass der Server mit einer uralt-Delphi-Version kompiliert worden ist, deren Ausgabe wohl den Stream verhunzt. Mit einem Beta-FPC-Build klappt das alles wunderbar...

Kann also zugemacht werden hier :)
Lazarus v. 1.0.10
Windows, Linux, MacOS X

Antworten