StringList.Find

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

StringList.Find

Beitragvon Mathias » 16. Sep 2018, 17:20 StringList.Find

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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Socke » 16. Sep 2018, 20:08 Re: StringList.Find

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
Socke
 
Beiträge: 2552
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Mathias » 16. Sep 2018, 20:52 Re: StringList.Find

Da bleibt mir wohl nichts anderes übrig.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste

porpoises-institution
accuracy-worried