procedure
ExecCmdine(
const
CmdLine:
string
; CmdResult: TStrings);
var
Output: PIOFile;
Buffer:
PChar
;
TempString:
string
;
Line:
string
;
BytesRead:
Integer
;
const
BufferSize:
Integer
=
1000
;
begin
Output := popen(
PChar
(CmdLine),
'D:\Проекты\©Сапунов Василий\Мега Калькулятор 23\Mega Calc v1\Console\Integer\IntegerPlus.exe'
);
GetMem(Buffer, BufferSize);
if
Assigned(Output)
then
try
while
feof(Output) =
0
do
begin
BytesRead := Libc
.
fread(Buffer,
1
, BufferSize, Output);
SetLength(TempString, Length(TempString)+BytesRead);
memcpy(@TempString[length(TempString)-(BytesRead-
1
)], Buffer, BytesRead);
while
Pos(#
10
, TempString) >
0
do
begin
Line := Copy(TempString,
1
, Pos(#
10
, TempString)-
1
);
if
CmdResult<>
nil
then
CmdResult
.
Add(Line);
TempString := copy(TempString, Pos(#
10
, TempString)+
1
, Length(TempString));
end
;
end
;
finally
Libc
.
pclose(output);
wait(
nil
);
FreeMem(Buffer,BufferSize);
end
;
end
;