added procedure to accumulate process output in a stream

This commit is contained in:
Basile Burg 2015-02-25 09:22:16 +01:00
parent c760299533
commit b23f72deda
1 changed files with 24 additions and 0 deletions

View File

@ -213,6 +213,11 @@ type
*)
procedure processOutputToStrings(aProcess: TProcess; var aList: TStringList);
(**
* Copy available process output to a stream.
*)
procedure processOutputToStream(aProcess: TProcess; output: TMemoryStream);
(**
* Terminates and frees aProcess;
*)
@ -810,6 +815,25 @@ begin
end;
end;
procedure processOutputToStream(aProcess: TProcess; output: TMemoryStream);
var
sum, cnt: Integer;
const
buffSz = 2048;
begin
if not (poUsePipes in aProcess.Options) then
exit;
//
sum := output.Size;
while aProcess.Output.NumBytesAvailable <> 0 do begin
output.SetSize(sum + buffSz);
cnt := aProcess.Output.Read((output.Memory + sum)^, buffSz);
sum += cnt;
end;
output.SetSize(sum);
output.Position := sum;
end;
procedure killProcess(var aProcess: TAsyncProcess);
begin
if aProcess = nil then