![]() |
String in StringList suchen
Hi,
ich suche die Zeilennummer in einer StringList, in der ein Teilstring das erste mal vor kommt. Benutzt man IndexOf, so muss der gesamte String der Zeile mit dem Teilstring übereinstimmen. Geht also nicht. als Bsp.
Delphi-Quellcode:
Die zu suchende Zeile lautet "$Msg_1001*1D".
Index := MyStringList.IndexOf('Msg_1001');
Im Bsp. liefert IndexOf -1. Eigentlich wollte ich die Zeilennummer haben. Kennt hier jemand eine andere einfache Möglichkeit außer die gesamte List in einer Schleife zu durchlaufen und Zeilenweise mit Pos zu suchen? Gruß oki |
Re: String in StringList suchen
Das .IndexOf funktioniert, muß der Suchstring mit einem Eintrag komplett übereinstimmen. In deinem Fall mußt du wohl jeden Teilstring mit Pos o.ä. Durchsuchen.
|
Re: String in StringList suchen
Also doch der "lange" Weg. Naja, wollte nur sicher gehen.
Dank und Gruß oki |
Re: String in StringList suchen
hab's jetzt so gelöst:
Delphi-Quellcode:
Gruß
function GetMsgStartLine(Identifier: String): Integer;
var Counter : Integer; begin Result := -1; For counter := 0 to MyStringList.Count -1 do begin IF Pos(Identifier, MyStringList.Strings[Counter]) > 0 then begin Result := Index; Exit; end; end; end; |
Re: String in StringList suchen
Hi Leute,
beginner77 hat mich auf einen Fehler aufmerksam gemacht. Hier noch mal der korrekte Code:
Delphi-Quellcode:
Gruß oki
function GetMsgStartLine(Identifier: String): Integer;
var Counter, Index : Integer; begin Result := -1; For counter := 0 to MyStringList.Count -1 do begin Index := Pos(Identifier, MyStringList.Strings[Counter]); IF Index > 0 then begin Result := Index; Exit; end; end; end; |
Re: String in StringList suchen
Wolltest Du nich die Zeilennumer haben.
Delphi-Quellcode:
Hier bekommst Du die Position in der Zeile geliefert aber nicht die Zeile.
function GetMsgStartLine(Identifier: String): Integer;
var Counter, Index : Integer; begin Result := -1; For counter := 0 to MyStringList.Count -1 do begin Index := Pos(Identifier, MyStringList.Strings[Counter]); IF Index > 0 then begin Result := Index; Exit; end; end; end; Result:=counter sollte Dir die Zeilennummer geben. Grüße Klaus |
Re: String in StringList suchen
Hi Klaus,
ich gebs auf :wall: Natürlich wollte ich die Zeilennummer haben. Hier die x-te Korrektur:
Delphi-Quellcode:
Ich hoffe das war's jetzt. wenn einem noch was auffällt, her damit.
function GetMsgStartLine(Identifier: String): Integer;
var Counter : Integer; begin Result := -1; For counter := 0 to MyStringList.Count -1 do begin IF Pos(Identifier, MyStringList.Strings[Counter]) > 0 then begin Result := Counter; Exit; end; end; end; |
Re: String in StringList suchen
Moin moin Leuts,
mal so, aus dem Handgelenk würde ich das ehr so angehen: 1.) i := Pos('suchtext', MyStringList.Text); 2.) von der Position i rückwärts nach CR/LF suchen 3.) von der Position i vorwärts nach CR/LF oder #00 suchen Zwischen den Pos. 1. und Pos. 2. liegt der exakte String, mit dem man dann ein
Delphi-Quellcode:
füttern könnte.
Index := MyStringList.IndexOf('Msg_1001');
Dürfte bei langen Listen auch schneller sein. |
Re: String in StringList suchen
Hi kalmi01,
warum schneller? Gruß |
Re: String in StringList suchen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz