Der Code, der dir nun fehlt, ist der, den du gepostet hast.
Ich habe deinen letzten Code verwendet und damit wird nur der letzte ausgeführt. Die anderen Codes habe ich nicht, da überschrieben.
Aber z.B. bei Post #5 Habe ich den Code von Threads.Execute.
Ich habe dort schon alles ausprobiert. von while über repeat until. Und habe da Überprüfung gemacht, ob der Thread1 beendet ist oder einen ReturnValue zurück gibt bevor er weiter machen darf. Habe dort mit WaitForSingleObject gearbeitet. Einfach ALLES.
Es werden auch ALLE Threads gestartet, aber es werden ALLE bis auf den letzten auch sofort wieder beendet, ohne dass deren Execute ausgeführt wird. Das versteh ich einfach nicht.
edit:
vielleicht sollte ich einfach das hier:
Delphi-Quellcode:
procedure TSearchThread.Execute;
var
i:integer;
liste: TStringList;
begin
liste := TStringList.Create;
GetFilesInDirectory(fpath,'*.exe',liste,true,true); // Funktion hier aus der CodeLibary
frmSearchdlg.Memo1.Lines.AddStrings(liste);
liste.Free;
end;
dahingehend abändern, dass ich nicht nur ein Laufwerk übergebe, sondern die Liste mit allen ausgewählen Laufwerken und dann dort eine Schleife einbaue, die dann nacheinander alle Laufwerke durchsucht. Dann bräuchte ich auch nur noch einen Thread und keinen Array..