StringList.Find

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

StringList.Find

Beitrag von Mathias »

Ich will einen Teilstring in einer StringList suchen.
Nur findet er das 'e' nicht.
Wen ich aber nach 'def' suche, dann wird es gefunden.
Kann man auch irgendwie einen Teilstring finden, in dem Fall das 'e' ?

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
  Index: integer;
begin
  sl := TStringList.Create;
 
  sl.Sorted:=True;
  sl.Add('abc');
  sl.Add('def');
  sl.Add('ghi');
 
  if sl.Find('e', Index) then begin
    Color := clGreen;
  end;
 
  sl.Free;
end;   
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: StringList.Find

Beitrag von Socke »

TStringList.Find() sucht immer nach ganzen Zeilen; sofern die Liste sortiert ist, wird das auch durch eine binäre Suche beschleuningt.
Da du einen Teilstring suchst, hilft nur selbst über die Liste zu iterieren und mit Pos() zu prüfen, ob dein Teilstring enthalten ist.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: StringList.Find

Beitrag von Mathias »

Da bleibt mir wohl nichts anderes übrig.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten