AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob TStrings gerade geupdated wird

Ein Thema von Krümelmonster · begonnen am 29. Mär 2008 · letzter Beitrag vom 8. Feb 2010
 
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Prüfen ob TStrings gerade geupdated wird

  Alt 8. Feb 2010, 11:12
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
Alex Winzer
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz