Hallo Codehunter,
no offense intended! Ich bin froh über deinen Beitrag!
Ich versuche nur, deinen Code zum Laufen zu kriegen, was ich auch gerade geschafft habe.
Folgende Verbesserungen habe ich noch eingebaut:
1. Start weiterer Threads in AuslesenFertig() mit der folgenden Kondition, da bereits gestartete Threads mit erneutem T.Start zu einer
Exception führen:
Delphi-Quellcode:
if ((T.Suspended) and (not T.Finished) and (not T.Started)) then
begin
T.Start;
Break;
end;
2. Freigeben der Threads bereits bei Erzeugung konfigurieren:
T.FreeOnTerminate := True;
3. Freigeben der Pointer auf die Records in den Threads mit Dispose():
Delphi-Quellcode:
New(Daten);
// Speicherplatz reservieren
try
DL.Add(sFile, Daten^);
T := TDateiReaderThread.Create(True);
//Thread ist erstmal suspendiert
T.FreeOnTerminate := True;
T.FileName := sFile;
T.OnComplete := DateiEinlesenFertig;
TL.Add(T);
finally
Dispose(Daten);
end;