![]() |
tstringlist öfter durchlaufen
Morgen
wie kann ich den befehlt STringlist.indexof() öfter benutzen in der selben datei? Ich meine den eintrag den ich suche kann es mehrmals geben aber dieser befehl hört nach beim ersten ma auf Tigermoon |
Re: tstringlist öfter durchlaufen
Moin.
Wie wäre es mit einer Zählschleife FOR ... TO ... DO? Grüße vom marabu |
Re: tstringlist öfter durchlaufen
Moin, moin,
lauf doch die StringList.Strings[i] von 0 bis Pred(Count) selbst durch. PS : mit der Schleife von Marabu (war schneller : Guten Morgen !) Grüße // Martin |
Re: tstringlist öfter durchlaufen
Oder einfach die Klasse etwas erweitern:
Delphi-Quellcode:
Und dann zum Beispiel so verwenden:
TExStringList = class(TStringList)
constructor Create; destructor Destroy; override; private fLastMatch: integer; fSearchKey: string; public function FindFirst(aValue: string): integer; function FindNext: integer; end; implementation { TexStringList } constructor TExStringList.Create; begin fLastMatch := -1; inherited; end; destructor TExStringList.Destroy; begin inherited; end; function TExStringList.FindFirst(aValue: string): integer; begin fSearchKey := aValue; fLastMatch := IndexOf(fSearchKey); Result := fLastMatch; end; function TExStringList.FindNext: integer; var ndx: integer; begin Result := -1; for ndx := Succ(fLastMatch) to Pred(GetCount) do begin if CompareStrings(Get(ndx), fSearchKey) = 0 then begin fLastMatch := ndx; Result := fLastMatch; Exit; end; end; end;
Delphi-Quellcode:
procedure TDemoForm.btn_Button1Click(Sender: TObject);
var sl: TExStringList; findindex: integer; begin sl := TexStringList.Create; try sl.Add('blubb'); sl.Add('meow'); sl.Add('blubb'); sl.Add('blubb'); sl.Add('meow'); sl.Add('blubb'); lb_ListBox1.Clear; // Zum Test gebe ich den Index in einer TListBox aus. findindex := sl.FindFirst('blubb'); while findindex > -1 do begin lb_ListBox1.Items.Add(IntToStr(findindex)); findindex := sl.FindNext; end; finally sl.Free; end; end; |
Re: tstringlist öfter durchlaufen
Zitat:
was macht das "Pred"? |
Re: tstringlist öfter durchlaufen
Zitat:
Das F1 Ding von Delphi meint Die Funktion gibt den Vorgänger des Arguments zurück. In diesem Fall ist also Pred(x) = x - 1; und Succ(x) = x + 1 |
Re: tstringlist öfter durchlaufen
wie bekomme ich das ende der datei raus?
also den letzten string für die for schleife Tigermoon |
Re: tstringlist öfter durchlaufen
(Ist das nicht nen neues Thema?)
Schau mal in der OH nach EoF (Dateiende). Genauso wegen Ende/Größe der StringList, Cursor auf TStringList und F1 drücken, Methoden klicken und staunen :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz