gibt es bessere / schnellere Lösungen ?
Ja: ValueFromIndex benutzen statt pos.
Der Witz ist, dass dein Code zwar "richtig" funktioniert, im Gegensatz zur ursprünglichen Schleife, da dort das POS irgendwas findet, auch X oder geb in xXx=Ergebnis.
Und der Code ist viel einfacher zu lesen, ist genauso schnell wie das normale IndexOfName,
aber es muß zwangsläufiger langsamer werden, als die einfache Pos-Variante.
Also besser ja, aber schneller ne.
Original wurde im String (ganze Zeile) nur gesucht/verglichen,
während ValueFromIndex erstmal langsam einen neuen String erzeugt (Teil aus Zeile kopiert) und dort dann schneller den ganzen String richtig/vollsändig vergleicht.
Hallo,
Pos('=Value2',StringList.DelimitedText) ?
Das würde aber auch bei einem Eintrag 'Value22' anschlagen.
EndsStr statt Pos wäre hier fast richtiger, aber das würde auch
Ergebnis
in
xXx=abc=Ergebnis
finden, obwohl der Wert eigentlich
abc=Ergebnis
wäre.
Gut, wenn man ausschließt, dass dort ein
=
drin vorkommt, dann reicht EndsStr aus.
Man müsste also auch noch prüfen, sodass vor dem Gefundenen kein weiteres
=
vorkommt.
Ansonsten ist die "einfache" Lösung mit ValueFromIndex.
Tipp: eine Zweiphasensuche
Erst schnell mit EndsStr suchen und dann jeden gefundenen Eintrag nochmal "genauer" mit ValueFromIndex nachprüfen,
falls es unbedingt schnell sein muß, auch in einer StringListe.
Schneller geht es sonst nur mit einer Liste, wo Name und Value bereits getrennt in zwei Variablen gespeichert wurden,
am Besten noch, wenn die Liste gehasht und womöglich sogar sortiert wurde.