![]() |
String mit einer Datei abgleichen
Hallo,
würde gernen einen String mit einer Datei (Inhalt) vergleichen.
Delphi-Quellcode:
ich habe eine Datei mit Zahlen zum Beispiel:
List:= TStringList.Create;
List.LoadFromFile(ExtractFilePath(ParamStr( 0 )) + '\List.dat'); for i := 0 to List.Count - 1 do begin if sl.Strings[0] = List[i] then begin 758, 326, 569 kommt einer diese drei Zahlen im String (sl.String[0]) vor dann .... |
AW: String mit einer Datei abgleichen
Was ist deine Frage?
Einträge der Liste mit der ersten Zeile der Datei zu vergleichen und wenn gefunden, dann was machen, das macht du doch schon? Willst du andersrum, etwas machen, wenn nicht drin, in einem Boolean merken wenn gefunden und nach der Schleife (nach allen Vergleichen) dann das auswerten, oder, wie gesagt ... IndexOf. Oder nicht nur mit der ersten Zeile vergleichen? Wenn die Zahlen nicht in den selben Zeilen wie in der Liste stehen, dann brauchst du per se zwei Schleifen, um jeden String in der Liste mit jeder Zeile der Datei zu vergleichen. Oder eine Schleife und IndexOf (was den Wert mit jeder Zeile vergleicht). Was ist "dann"? Wenn neue Werte in Liste einfügen/angängen und "doppelte" ignorieren, dann kennt eine StringList such etwas bezüglich "Duplicate ignore" und man kann somit einfach ALLES per Add/AddStrings hinzufügen, weil Doppeltes automatisch wegfliegt. |
AW: String mit einer Datei abgleichen
ach ja mein Problem :-) richtig in der Datei wird nur die erste Zeile gelesen.
brauche eine Schleife um alle Zeilen zu lesen. wie könnte so eine Schleife aussehen? |
AW: String mit einer Datei abgleichen
Zitat:
Grundsätzlich sollte Dir
Delphi-Quellcode:
weiterhelfen.
List.find('Suchstring', Index)
Zitat:
|
AW: String mit einer Datei abgleichen
Zitat:
bin noch am experimentieren habe noch keine Lösung, dass ist auch falsch, glaube ich
Delphi-Quellcode:
List:= TStringList.Create;
List.LoadFromFile(ExtractFilePath(ParamStr( 0 )) + '\List.dat'); for i := 0 to List.Count - 1 do begin if Index = List.IndexOf(sl.Strings[0]) then begin |
AW: String mit einer Datei abgleichen
Der Code sollte doch funktionieren. Daher vermute ich, dass in der List.dat-Datei ein Komma ist und in sl.Strings[0] nicht?
Probiere mal folgendes.
Delphi-Quellcode:
Aber eigentlich sollte das alles beim debuggen ersichtlich sein.VAR s, s2: STRING; List: TStringList; i: Integer; BEGIN IF FileExists( ExtractFilePath( ParamStr( 0 ) ) + '\List.dat' ) THEN BEGIN s := sl.Strings[0]; ShowMessage( s ); List := TStringList.Create; TRY List.LoadFromFile( ExtractFilePath( ParamStr( 0 ) ) + '\List.dat' ); FOR i := 0 TO List.Count - 1 DO BEGIN s2 := StringReplace( List.Strings[i], ',', '', [rfReplaceAll] ); ShowMessage( s2 ); IF s = s2 THEN BEGIN // hier das was du machen willst break; END; END; FINALLY List.Free; END; END; END; |
AW: String mit einer Datei abgleichen
Liste der Anhänge anzeigen (Anzahl: 1)
die Zahlen stehen untereinander, es wird immer nur die erste Zeile gelesen :-( warum????
|
AW: String mit einer Datei abgleichen
Das Komma gehört auch zum String. Ist das vielleicht dein Problem?
|
AW: String mit einer Datei abgleichen
Da ich das Komma als Problem vermutet hatte, hatte ich StringReplace() vorgeschlagen.
Wenn du meinen Code anwendest: Wie oft erscheint die Showmessage mit s2 ? Und was genau steht eigentlich in s? |
AW: String mit einer Datei abgleichen
Zitat:
zu (2) Showmessage s2 wird einmal angezeigt zu (3) es wird immer nur eine Zahl angezeigt zum Beispiel : 1234 habe das Gefühl, als würde aus der Datei immer nur die erste Zeile gelesen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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