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
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#11

Re: String in StringList suchen

  Alt 19. Dez 2006, 18:28
Zitat von kalmi01:
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.
Das bezweifle ich, denn
1. Die Get-Methode von MyStringList.Text iteriert über alle Strings und
2. bastelt den Text. Dadrin suchst Du
3. per Pos um dann nochmals mittels
4. IndexOf zu suchen.

Hmm... Ein natives "pos" über alle MyStringList.Text dürfte doch wesentlich schneller sein, auch wenn es nicht befriedigend ist.
Um in einer Liste von Zeilen einen zweiten Teilstring zu suchen, eignet sich die TStringlist nur bedingt. Ok, wem es Schnurz ist, ob das nun 10ms oder 5ms dauert (z.B.) der soll das nehmen, denn dafür reicht es allemal (also, wenn nur wenige tausend Einträge in der Liste sind).

Wenn das eine zeitkritische Angelegenheit ist, würde ich:
1. Keine TStringlist nehmen, sondern
2. einen einzigen String S verwenden, ähnlich MyStringList.Text.
3. Für jede Zeile die StartPosition innerhalb S merken (Z : Array Of Integer) (die Liste ist sortiert!)
4. Mit einem schnelleren Pattern-Matching als POS (QS-Search oder Boyer-Moore für sehr lange Suchstrings) die Position P finden
5. P mit binary search in S suchen.

Ich denke, das dürfte recht fix sein, Es geht natürlich noch schneller (z.B. Pos.5), aber das würde zu weit führen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
 


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 20:21 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