Ich wollte kein neues Thema aufmachen, da die Überschrift m.E. wie die sprichwörtliche Faust aufs Auge passt:
Ich benutze eine TStringList in einer
Unit, um sie von meinem Hauptprogramm mit Dateinamen zu bestücken. Dann reagiere ich auf das Ereichnis OnChange und verarbeite die Dateinamen.
Das funktioniert soweit super.
Nur sehe ich leider
mehrere Probleme.
Innerhalb meiner Ereignisbehandlungsroutine gehe ich alle Einträge mittels
Delphi-Quellcode:
While Count > 0 Do
Begin
S:=Strings[0];
If S = ...
// Verarbeiten der Einträge
Delete(0);
End;
durch.
Wenn nun
während der Verarbeitung weitere Einträge in der Liste hinzukommen, dann werden die mit abgearbeitet, weil dann Count wieder erhöht wird. Es wäre dann sinnlos und problematisch, wenn sich dann 2 Instanzen der Ereignisbehandlungsroutine in die Quere kämen. Meine Idee sah dann zunächst so aus:
Delphi-Quellcode:
If Laueft Then Exit; // nur eine Instanz laufen lassen
Laeuft:=True;
While Count > 0 Do
Begin
S:=Strings[0];
If S = ...
// Verarbeiten der Einträge
Delete(0);
End;
Laeuft:=False;
Aber ich hätte dann ein Problem, wenn meine Ereignisbehandlung exakt zwischen dem
End; und dem
Laeuft:=False; steht, während weitere Einträge hinzukommen. Der erneute Aufruf würde wegen des Zustandes von
Laeuft sofort beendet (Then Exit
, meine neuen Einträge werden aber nicht mehr abgearbeitet, weil
While Count > 0 Do ... schon vollständig beendet war.
Ich hoffe, Ihr könnte mein Problem nachvollziehen.
Case Nachvollziehen
Of
Nein : Bitte nachfragen;
Ja :
Wie kann ich das Dilemma lösen?
End;
Danke, Alex