Stringlist.Find

Verweis: Stringlisten Stringlist.IndexOf
Uses: Classes
Eingabe: Suchtext(string)Index1(Integer)
Ausgabe: gefunden?(boolean),fundort(integer)
Funktion: Sucht in einer sortierten Stringlist nach einer Zeile und gibt als Ergebnis ja oder nein sowie den Fundort zurück.

Beispiel 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie einen TButton und TMemo auf die Form. Doppelklicken sie auf den Button und ersetzen Sie das Ereignis durch folgenden Quelltext:

procedure TForm1.Button1Click(Sender: TObject);
const
  Farben: array[0..4] of string =
    ('rot', 'grün', 'blau', 'gelb', 'weiß');
var
  Liste: TStringList; //Verknüpfe Variable mit liste
  Index: integer; //Wo gefunden
begin
  Liste := TStringList.Create; // Erstelle eine Liste
  // Laut Anleitung soll der Befehl
  // Find nur in sortierten listen angewand werden
  liste.Sorted := True;
  // Mit AddString ist es Möglich
  // ein definiertes Array hinzu zufügen.
  liste.AddStrings(Farben);
  memo1.Lines := liste;
  //Wenn du den Text findest dann
  if liste.Find('weiß', Index) then
    ShowMessage('Ich haben den Text an der ' + IntToStr(Index) +
      '. Position gefunden.')
  else
    ShowMessage('Ich habe keinen passenden Text gefunden.');
  Liste.Free;
end;

Die Methode “Stringlist.Find” sucht in einer sortierten Liste nach dem unter dem Befehl Find angegeben Zeile. Dabei muss die gesamte Zeile der gesuchten Zeile entsprechen. Wenn wir also in Unserem Beispiel ‘weiß’ durch ‘weiß und rosa’ austauschen dann kann der Befehl Find die Zeile nicht finden. Es ist wichtig, dass der Befehl “Find” nur auf sortierte listen angewendet wird. Sollten wir uns nicht daran halten, werden wir mit dieser Meldung belohnt. 🙂

Lazarus Find-Error- unsortierte Liste
Find-Error- unsortierte Liste

Wenn sie in einer unsortierten Liste suchen wollen,dann sollten sie sich den Befehl “IndexOf” anschauen.