Forum: Object-Pascal / Delphi-Language
Delphi
by alzaimar,
14. Aug 2005
@marabu: Auch wenn's völlig unwichtig ist: Ich bleib dabei, man 'kann', muss aber nicht;
Sei j0 der kleinste Index mit sl = KEY zu irgendeinem KEY und j1 der größte Index. Ziel ist es, j0 zu finden. Ob ich bei j1 anfange (so wie ich mit meiner Änderung) oder bei einem beliebigen j (j0<=j<=j1), so wie Du mit dem IndexOf, ist unerheblich. Allerdings ist meine Version schneller, insofern kann man...
Forum: Object-Pascal / Delphi-Language
Delphi
by alzaimar,
14. Aug 2005
Wenn Du bei einer TStringList Sorted auf True setzt, dann wird beim IndexOf nicht sequentiell, sondern binär gesucht (binarysearch). Das findet aber nur irgendeinen Eintrag, aber nicht unbedingt den Ersten. Beispiel: Liste = (1,2,2,2,3). Suche nach 2 liefert im ersten Durchgang einen Treffer, nämlich l ='2', das ist aber nicht das erste Auftreten. Deshalb ist die Verwendung des Suchergebnisses...
Forum: Object-Pascal / Delphi-Language
Delphi
by alzaimar,
14. Aug 2005
Kann ich mich bei einem TStringList.IndexOf denn darauf verlassen, das bei doppeltem Vorkommen immer der erste Eintrag gefunden wird, vor allen Dingen, wenn die TStringList.sorted = True ist? Ich weiss, eine ketzterische Frage.
Um auf Nummer Sicher zu gehen, würde ich mir die Mühe machen, das IndexOf durch eine kleine eigene Routine ersetzt, die prüft, ob ein Wert in der Unterliste (0..n)...