Пытаюсь из своего приложения запустить другое консольное приложение и вывести на форме результаты.
Делаю так
- Код: Выделить всё
procedure TPlayThread.Execute;
var
MyProcess: TProcess;
Buffer: array[0..127] of char;
Readsize: integer;
ReadCount: integer;
begin
MyProcess := TProcess.Create(nil);
// try
MyProcess.executable := 'D:\kod\consoletest\ptest.exe';
Myprocess.parameters.add('1');
Myprocess.parameters.add('2');
Myprocess.parameters.add('31');
Myprocess.parameters.add('Hell1');
MyProcess.Options := MyProcess.Options + [poUsePipes];
MyProcess.Execute;
while MyProcess.Running do
begin
if MyProcess.Output.NumBytesAvailable > 0 then
begin
ReadSize := MyProcess.Output.NumBytesAvailable;
if ReadSize > SizeOf(Buffer) then
ReadSize := SizeOf(Buffer);
ReadCount := MyProcess.Output.Read(Buffer, ReadSize);
setstring(fStatusText, Buffer, ReadCount);
end;
Synchronize(@ShowStatus);
end;
// finally
MyProcess.Free;
// end;
end;
Но вывод в memo забивается одинаковыми строчками данных.
Подскажите как считывать данные по мере поступления.