启动7zip并从控制台获取输出

时间:2012-06-04 20:58:55

标签: command-line freepascal 7zip

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

0 个答案:

没有答案