Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String nach anderem String durchsuchen (https://www.delphipraxis.net/125869-string-nach-anderem-string-durchsuchen.html)

Z4ppy 13. Dez 2008 15:37


String nach anderem String durchsuchen
 
Ich habe hier einen String, den ich nach einem anderen String durchsuchen möchte.
Ich dachte nun erstmal an Pos, aber das Problem ist, dass der Suchstring im durchsuchten String mehrmals vorkommen kann und ich jedesmal, wenn ich ihn finde, etwas machen muss mit den folgenden Zeichen.

Idee (ungetestet):
Delphi-Quellcode:
Position:=Pos(searchstr,str);
{mit Position was machen}
str:=Copy(str,Position+Length(searchstr),Length(str)-(Position+Length(searchstr));
und das ganze halt in ner Schleife bis Position 0 ist...

Oder gibts noch ne schnellere Methode?

MfG Z4ppy

DeddyH 13. Dez 2008 15:39

Re: String nach anderem String durchsuchen
 
Evtl. käme PosEx aus StrUtils in Frage.

blink182 13. Dez 2008 15:44

Re: String nach anderem String durchsuchen
 
hi
PosEx hätte ich dir auch empfohlen, aber dann hast du auch eine schleife und suchst halt einfach ab der alten Position.
Bei deinem ungetesten Code, musst du ggf. noch +1 beim 2. Parameter der Copy-Funktion machen,wenn ich mich recht entsinne und am Ende kannst du eigentlich einfach length(str) eingeben, weil der wenn keine Zeichen mehr folgen einfach den String dann so lässt, aber das ist eigentlich egal.

Z4ppy 13. Dez 2008 15:58

Re: String nach anderem String durchsuchen
 
Wie könnte man denn überprüfen, was performanter ist? Die Unterschiede sind ja wahrscheinlich gering, aber ich wills trotzdem so schnell wie möglich machen ;)

MfG Z4ppy

€dit: PosEx kommt wohl doch nicht infrage, da ich dazu ja die StrUtils noch einbinden müsste. Dadurch würde die Exe aber wieder grösser, das will ich eigentlich verhindern ;) (System is eh drin)

DeddyH 13. Dez 2008 16:04

Re: String nach anderem String durchsuchen
 
Na, Du nimmst Dir einen relativ langen String zur Bearbeitung, rufst beide Methoden auf und misst mit dem Gespann QueryPerformanceCounter/QueryPerformanceFrequency die benötigte Zeit.

[edit] Wenn Du StrUtils nicht einbinden willst, kopier Dir doch den Source in Deine eigene Unit. [/edit]

Z4ppy 13. Dez 2008 16:25

Re: String nach anderem String durchsuchen
 
Jep, hab ich jetzt gemacht...
Ich habe eine Datei in einen String geladen und durchsuche so indirekt die Datei. Der String ist vorhanden (habs mit dem Editor überprüft), aber trotzdem gibt mir PosEx 0 zurück. Pos übrigens auch... Warum?

MfG Z4ppy

DeddyH 13. Dez 2008 16:28

Re: String nach anderem String durchsuchen
 
:glaskugel: Ohne den String und das Suchmuster zu kennen, was soll man da sagen?

Z4ppy 13. Dez 2008 16:51

Re: String nach anderem String durchsuchen
 
Muss an der Datei liegen, die ich in einen String lade.

Wenn ich die Datei mitm Editor öffne, den kompletten Inhalt kopiere, ihn in eine neue Datei kopiere und die als TXT abspeicher und dann diese durchsuche, gehts.
Wenn ich die Datei jedoch direkt nehm, gehts nicht.
Warum?

MfG Z4ppy

€dit: Grund gefunden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 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