Hallo,
ich lese aus einer Datei die Pfadnamen einer Sammlung von Dateien und möchte dann alle Dateien in dem durch Pfad angegebenen Verzeichnis untersuchen oder verändern. In meiner Datei können Pfade mehrfach vorkommen, ich darf aber die Dateien in jedem Pfad nicht doppelt bearbeiten. Ich schreibe deshalb jeden bearbeiteten Pfad in eine TStringlist und bevor ich mit der Bearbeitung eines Pfades beginne, prüfe ich mit TStringlist.find, ober ich den Pfad nicht schon einmal hatte.
Ich habe festgestellt, dass das find gelegentlich anscheinend ein Vorkommen nicht findet. Ich kann über TStringlist.strings[index] sehen, dass der nicht gefundenen Pfad eingetragen ist und im Debugger mit Auswerten/Ändern wird für den Ausdruck "TStringlist.strings[index]=Pfad" "true" berechnet, die Strings sind also wirklich gleich. Mit meiner "Ersatzfunktion" geht es zuverlässig.
Hat jemand so etwas schon mal gehabt? (Mit der Suchfunktion hier im Forum habe ich jedenfalls nichts gefunden.) Gibt es eine Tücke, die ich übersehen habe? Oder hat TStringlist.find wirklich eine Macke?
Viele Grüße
GuaAck
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| VAR Pfad: STRING; DirIndex: integer; gefunden: boolean; BEGIN
Pfad := .....
gefunden:=false; DirIndex:=0; WHILE NOT gefunden and (DirIndex<=(Dirliste.Count-1)) DO BEGIN gefunden:=(DIRliste.strings[DirIndex]=Pfad); DirIndex:=DirIndex+1; END; DirIndex:=DirIndex-1; if NOT gefunden then BEGIN Dirliste.add(Pfad); .... usw. |