Stringlist.find funktioniert nicht richtig

Rund um die LCL und andere Komponenten
Antworten
braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Stringlist.find funktioniert nicht richtig

Beitrag von braunbär »

Ich stehe vor einem Rätsel. Plötzlich werden Datensätze, die in der Stringlist vorhanden sind, nicht mehr gefunden. Die Stringlist ist natürlich sortiert.

Dieses Programmstück:

Code: Alles auswählen

    debug('Stringlist: Key='+Key); debug(sl.DelimitedText);
    if sl.find(Key,i)
    then begin sg.row:=i+1; debug ('Key gefunden'); end
    else begin sg.row:=1; debug('Key nicht gefunden') end;
liefert folgende Debugausgabe:

Code: Alles auswählen

Stringlist: Key=1400
"1200=Test	1030	Wien	789456123		0","1201=Franz Müller	1190	Wien	467245		0","1400=Schnurz	1010	WIen	1234		0",...
Key nicht gefunden
------------------------------------------------------------------
Der dritte Datensatz der Stringlist hat den Schlüssel 1400, trotzdem liefert sl.find offenbar den Wert false. Der Schlüsselwert 1400 hier dient nur als Beispiel, sl.find liefert immer false, egal, welchen Wert man sucht.

Dazu kommt jetzt ein weiteres Problem. Ich wollte mir im Debugger anschauen, was das find hier genau macht, aber F7 geht nicht in die find Routine hinein, sondern springt von der Zeile "if sl.find" direkt in den else Zweig der Abfrage.

Sieben
Beiträge: 202
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Stringlist.find funktioniert nicht richtig

Beitrag von Sieben »

Sucht Find nicht (wie IndexOf) nach dem ganzen String, so dass du für deine Suche IndexOfName bemühen müsstest...?

braunbär
Beiträge: 369
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: 64Bit
Wohnort: Wien

Re: Stringlist.find funktioniert nicht richtig

Beitrag von braunbär »

Tut es...
Unglaublich, was man nach einer längeren Programmierpause für Fehler machen kann...

Danke

Sieben
Beiträge: 202
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Stringlist.find funktioniert nicht richtig

Beitrag von Sieben »

Yes, I know... :wink:

Antworten