Seit FPC3.0.2: "Cannot use find on unsorted list"

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Seit FPC3.0.2: "Cannot use find on unsorted list"

Beitrag von MmVisual »

Hallo,

Vor 2 Monaten habe ich mein Projekt auf (Lazarus 1.6.2) FPC3.0.0 hoch gezogen, alles hat funktioniert. Nun habe ich Lazarus 1.6.4 (FPC3.0.2) installiert, und es erscheint diese Fehlermeldung:

Bild2.png


bei "TStringList.Find()".

Ist das ein Bug vom neuen FPC? Wieso sollte ich die Liste erst sortieren um darin suchen zu können?
Oder gibt es ein anders Suchen, das nicht extra zuvor sortiert werden muss?

Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Seit FPC3.0.2: "Cannot use find on unsorted list"

Beitrag von Socke »

MmVisual hat geschrieben:Ist das ein Bug vom neuen FPC? Wieso sollte ich die Liste erst sortieren um darin suchen zu können?
Oder gibt es ein anders Suchen, das nicht extra zuvor sortiert werden muss?

Nein, es ist eine Klarstellung.
In sortieren Listen, kann man Find (nur binäre Suche) verwenden; andernfalls verwendet man IndexOf (binäre Suche bei sortieren Listen, andernfalls lineare Suche).
Siehe http://www.freepascal.org/docs-html/rtl/classes/tstringlist.html und http://bugs.freepascal.org/view.php?id=26436
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Seit FPC3.0.2: "Cannot use find on unsorted list"

Beitrag von MmVisual »

Stimmt. In der Regel verwende ich immer IndexOf(). Ich weiß nicht mehr warum ich damals Find() verwendet hatte. Das war auch das einzige mal an dem ich Find() verwendet hatte, im ganzen Projekt.
Dankeschön, Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten