![]() |
TStringList.Find gibt nie True zurück
Hallo zusammen..
Folgendes Problem: Ich habe mir folgenden Quellcode überlegt, um zu prüfen ob eine Eingabe schon in meiner *.txt Datei vorhanden ist...
Delphi-Quellcode:
Jedoch wird nie ein Wort gefunden wenn es in der Datei vorhanden ist :?
List := TStringList.Create;
if FileExists(ExtractFilePath(ParamStr(0))+'Words.txt') then begin List.LoadFromFile(ExtractFilePath(ParamStr(0))+'Words.txt'); for j := 1 to List.Count-1 do begin k := j; if List.Find(Uppercase(tx),k) then begin ShowMessage('Wort bereits in Liste vorhanden!'); break; List.Free; exit; end; end; try List.Free; finally end; end; Vielen Dank für euer Bemühen im vorraus ;) |
Re: TStringList.Find gibt nie True zurück
Ich kann gerade nicht nachschauen, was macht denn TStringlist.Find? Ansonsten finde ich die Reihenfolge etwas suboptimal gewählt.
|
Re: TStringList.Find gibt nie True zurück
...und was liefert IndexOf ?
...wenn IndexOf einen wert größer -1 leifert, ist der String in der Liste. |
Re: TStringList.Find gibt nie True zurück
Du musst dafür sorgen, dass die StringList sortiert ist, sonst funktioniert Find nicht (such also mal nach der Eigenschaft "sorted" in der Hilfe).
Außerdem brauchst du dann Find auch nicht in einer Schleife mehrfach aufrufen, sondern das durchsucht automatisch die ganze Liste. Bis denn Bommel |
Re: TStringList.Find gibt nie True zurück
List.Find gibt eigentlich True zurück, wenn ein String, an meiner Stelle halt tx, an der stelle k vorhanden ist..
Und der Code wird auch noch überarbeitet, Stichwort: Subobtimale Reihenfolge ;) Ich hab mir das ganze eben nur schnell überlegt :) |
Re: TStringList.Find gibt nie True zurück
Zitat:
|
Re: TStringList.Find gibt nie True zurück
Für unsortierte Listen eignet sich IndexOf, wie oben beschrieben.
Auch das muss man nicht in einer Schleife abfragen. |
Re: TStringList.Find gibt nie True zurück
Richtig, IndexOf benutzt intern bereits eine Schleife.
|
Re: TStringList.Find gibt nie True zurück
Zitat:
Du solltest indexOf benutzen, das funktioniert mit sortierten und unsortierten Listen (und nutzt auch die Vorteile von sortierten Listen). Oder die Liste sortieren... :) |
Re: TStringList.Find gibt nie True zurück
Zitat:
Vielen Dank :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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