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

Command line 启动7zip并从控制台获取输出,command-line,freepascal,7zip,Command Line,Freepascal,7zip,在一个Lazarus(freepascal)项目中,我添加了一个带有以下选项的TAsyncProcess:[poUsePipes,poStderrToOutPut]以捕获输出并显示最后一行 使用ReadData事件,我添加了一些代码,如果我抓取一些文本,这些代码将显示最后一行: procedure TForm1.AsyncProcess1ReadData(Sender: TObject); var aOutput: TStringList; iCpt: integer; sLine:

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

使用
Windows7 64位上的
7-Zip 9.2064位
Lazarus 0.9.30.2
上编译,我可以很好地使用它。您可以包括您执行的
TAsyncProcess.CommandLine
吗?我可以向您展示整个代码:。我有
7-Zip[64]9.25 alpha
你能不能也粘贴
umain.lfm
文件?这将简化我构建整个表单的过程。请尝试: