在一个 Lazarus (freepascal) 项目中,我添加了一个带有这些选项的 TAsyncProcess:[poUsePipes,poStderrToOutPut]
捕获输出并显示最后一行。
使用该ReadData
事件,如果我抓取一些文本,我添加了一些显示最后一行的代码:
procedure TForm1.AsyncProcess1ReadData(Sender: TObject);
var
aOutput: TStringList;
iCpt: integer;
sLine: string;
begin
aOutput := TStringList.Create();
aOutput.LoadFromStream(AsyncProcess1.Output);
if (aOutput.Count > 0) then
begin
setStatus(aOutput.Strings[aOutput.Count-1]);
end;
end;
然后我试图得到最后一个非空行:
procedure TForm1.AsyncProcess1ReadData(Sender: TObject);
var
aOutput: TStringList;
iCpt: integer;
sLine: string;
begin
aOutput := TStringList.Create();
aOutput.LoadFromStream(AsyncProcess1.Output);
if (aOutput.Count > 0) then
begin
// Get the last non-empty line
for iCpt := (aOutput.Count-1) to 0 do
begin
sLine := aOutput.Strings[iCpt];
if Length(Trim(sLine)) > 0 then
begin
setStatus(sLine);
Break;
end;
end;
end;
end;
两者都没有显示。我已经成功地使用了 ffmpeg 的第一个代码。谢谢!