1

在一个 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 的第一个代码。谢谢!

4

0 回答 0