Command line 启动7zip并从控制台获取输出
在一个Lazarus(freepascal)项目中,我添加了一个带有以下选项的TAsyncProcess: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:
[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
文件?这将简化我构建整个表单的过程。请尝试: