Hey danke nochmal für die vielen Antworten, ich hab es jetzt mal (trotz allen bedenken) mit einem Thread-Objekt (noch etwas unfertig) gemacht. Das ganze wird so in einem Bruchteil erledigt. Hier mal der Code.
Wie gesagt noch nicht ganz fertig... Wie kann man die Zeit von dem ganzen Ablauf Messen ? Vorher habe ich das mit dem QueryPerformanceCounter gemacht in der ButtonClick Prozedur. Aber die Threads verfälchen das ganze doch ?
Schneller ist es aufjedenfall, das sehe ich schon allein wie schnell der Output da ist.
Delphi-Quellcode:
type
TMyThread1 = class (TThread)
private
protected
procedure Execute; override;
public
FDateienname: String;
end;
{ MyThread1 }
procedure TMyThread1.Execute;
var
AProcess: TProcess;
begin
AProcess := TProcess.Create(nil);
try
AProcess.Executable := ExtractFilePath(application.ExeName)+'Umwandler.exe';
AProcess.Parameters.Add(FDateienname);
AProcess.Options := AProcess.Options + [poWaitOnExit, poNoConsole];
AProcess.Execute;
finally
AProcess.Free;
end;
end;
procedure TForm1.Button8Click(Sender: TObject);
var
DateienLst: TSearchRec;
Thread1: TMyThread1;
begin
if FindFirst(Directory + '*.txt', faAnyFile and not faDirectory, DateienLst) = 0 then
try
repeat
Thread1:= TMyThread1.Create(True);
Thread1.FDateienname:= Directory+DateienLst.Name;
Thread1.Resume;
until FindNext(DateienLst) <> 0;
Thread1.FreeOnTerminate := True //??
finally
SysUtils.FindClose(DateienLst);
end;
end;