Tja, aber woher weiß ich, dass Gunzip fertig ist? Deswegen hatte ich ja die Scheife zwischen den Aufruf der beiden Programme geschrieben. Ich rufe Gunzip folgendermaßen auf:
Delphi-Quellcode:
Procedure TForm1.DecompressFiles(applicationName, s: String);
var
SI: TStartupInfo;
PI: TProcessInformation;
AppHWnd :HWND;
ProcessId: DWORD;
I: Integer;
begin
AppHWnd := 0;
FillChar(SI, SizeOf(TStartupInfo), 0);
SI.cb := SizeOf(TStartupInfo);
SI.dwFlags := STARTF_USESHOWWINDOW;
SI.wShowWindow := SW_HIDE;
if CreateProcess(nil, PChar(extractFilePath(application.ExeName)+applicationName+s), nil, nil, False, 0, nil, nil, SI, PI) then
begin
WaitForInputIdle(PI.hProcess, INFINITE);
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end;
end;
und der Aufruf dann:
DecompressFiles('gunzip ', extractFileName(FileList.Strings[i]));
und danach jetzt mal ohne die repeat until-Schleife:
Delphi-Quellcode:
DecompressFiles('7z x ', ansiReplaceStr(extractFileName(FileList.Strings[i]),
extractFileExt(extractFileName(FileList.Strings[i])), ''));