Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String mit einer Datei abgleichen (https://www.delphipraxis.net/211814-string-mit-einer-datei-abgleichen.html)

lucy 5. Nov 2022 12:59

String mit einer Datei abgleichen
 
Hallo,

würde gernen einen String mit einer Datei (Inhalt) vergleichen.

Delphi-Quellcode:
 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
ich habe eine Datei mit Zahlen zum Beispiel:

758,
326,
569

kommt einer diese drei Zahlen im String (sl.String[0]) vor dann ....

himitsu 5. Nov 2022 13:30

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.

lucy 5. Nov 2022 15:01

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?

blawen 5. Nov 2022 16:41

AW: String mit einer Datei abgleichen
 
Zitat:

Zitat von lucy (Beitrag 1514363)
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?

Kommen die Werte auch Mehrfach vor?

Grundsätzlich sollte Dir
Delphi-Quellcode:
List.find('Suchstring', Index)
weiterhelfen.
Zitat:

function Find(const S: string; var Index: Integer): Boolean; virtual;

Sucht in einer sortierten Liste den Index eines Strings und gibt an, ob bereits ein String mit diesem Wert vorhanden ist.


lucy 5. Nov 2022 18:24

AW: String mit einer Datei abgleichen
 
Zitat:

Kommen die Werte auch Mehrfach vor?
nein, die Werte sind einmalig in der Datei.

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

juergen 5. Nov 2022 21:45

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:
 
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;
Aber eigentlich sollte das alles beim debuggen ersichtlich sein.

lucy 6. Nov 2022 08:50

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????

zeras 6. Nov 2022 08:53

AW: String mit einer Datei abgleichen
 
Das Komma gehört auch zum String. Ist das vielleicht dein Problem?

juergen 6. Nov 2022 09:05

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?

lucy 6. Nov 2022 09:26

AW: String mit einer Datei abgleichen
 
Zitat:

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?
zu (1) habe beide Varianten mit und ohne [,] ausprobiert

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 19:41 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz