AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String in StringList suchen

Ein Thema von oki · begonnen am 13. Dez 2006 · letzter Beitrag vom 20. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

String in StringList suchen

  Alt 13. Dez 2006, 21:02
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.
  Index := MyStringList.IndexOf('Msg_1001'); Die zu suchende Zeile lautet "$Msg_1001*1D".

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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: String in StringList suchen

  Alt 13. Dez 2006, 21:05
Das .IndexOf funktioniert, muß der Suchstring mit einem Eintrag komplett übereinstimmen. In deinem Fall mußt du wohl jeden Teilstring mit Pos o.ä. Durchsuchen.
Markus Kinzler
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: String in StringList suchen

  Alt 13. Dez 2006, 21:11
Also doch der "lange" Weg. Naja, wollte nur sicher gehen.

Dank und Gruß oki
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: String in StringList suchen

  Alt 13. Dez 2006, 21:18
hab's jetzt so gelöst:
Delphi-Quellcode:
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;
Gruß
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: String in StringList suchen

  Alt 19. Dez 2006, 13:23
Hi Leute,

beginner77 hat mich auf einen Fehler aufmerksam gemacht. Hier noch mal der korrekte Code:
Delphi-Quellcode:
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;
Gruß oki
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: String in StringList suchen

  Alt 19. Dez 2006, 13:52
Wolltest Du nich die Zeilennumer haben.

Delphi-Quellcode:
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;
Hier bekommst Du die Position in der Zeile geliefert aber nicht die Zeile.

Result:=counter

sollte Dir die Zeilennummer geben.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: String in StringList suchen

  Alt 19. Dez 2006, 14:11
Hi Klaus,

ich gebs auf

Natürlich wollte ich die Zeilennummer haben. Hier die x-te Korrektur:
Delphi-Quellcode:
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;
Ich hoffe das war's jetzt. wenn einem noch was auffällt, her damit.
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#8

Re: String in StringList suchen

  Alt 19. Dez 2006, 14:47
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 einIndex := MyStringList.IndexOf('Msg_1001'); füttern könnte.
Dürfte bei langen Listen auch schneller sein.
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#9

Re: String in StringList suchen

  Alt 19. Dez 2006, 18:40
Hi kalmi01,

warum schneller?

Gruß
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#10

Re: String in StringList suchen

  Alt 19. Dez 2006, 19:06
Zitat von oki:
warum schneller?
Weil der Vergleich auf GLEICHHEIT schneller ist, als das Suchen einer Position in einem String ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz