![]() |
mehrere Tokens aus string löschen
Delphi-Quellcode:
Dies ist eine Procedur die nicht funktioniert...warum, weiss ich nicht. Was ich erreichen will ist folgendes:
procedure ReplaceStr(var ToReplace:string; const strout,strin:string);
var p:integer; begin p := Pos(strout, ToReplace); //if p<>0 then while p<>0 do begin Delete(ToReplace, p, Length( strout ) ); Insert(strin, ToReplace, p); //ReplaceStr(ToReplace, strout, strin); p := Pos(strout, ToReplace); end; end;
Delphi-Quellcode:
Was mache ich falsch ?
Anfangsstring := 'jh sj ebnjbfu hhh sdhweh sdfhhhs jhe hjhhh';
ReplaceStr(Anfangsstring, 'hhh, 'X'); //jetzt sieht mein string so aus Anfangsstring := 'jh sj ebnjbfu X sdhweh sdfXs jhe hjX'; |
Re: mehrere Tokens aus string löschen
Klappt bei mir aber :gruebel:
|
Re: mehrere Tokens aus string löschen
Ich würde eine Lösung auf Basis von PosEx() vorziehen, da ansonsten eine nicht endende Rekursion auftreten kann - bereits veränderter Text soll ja nicht erneut betrachtet werden...
Grüße vom marabu |
Re: mehrere Tokens aus string löschen
Und wo soll PosEx sein ?
[Error] Undeclared idetifier : 'PosEx' |
Re: mehrere Tokens aus string löschen
In allen Delphi-Versionen ab 7 ^^ .
|
Re: mehrere Tokens aus string löschen
Ich habe aber Delphi 6...
Meine Lösung (nicht schön aber geht...für meine Zwecke reicht) :
Delphi-Quellcode:
procedure ReplaceStr(var ToReplace:string; const strout,strin:string);
var p :integer; before, after:string; begin before := ''; after := ToReplace; p := Pos(strout, after); while p<>0 do begin before := before + Copy(after,1,p-1) + strin; after := Copy(after, p+Length(strout), length(after) - p+Length(strout) ); p := Pos(strout, after); end; ToReplace := before+after; end; |
Re: mehrere Tokens aus string löschen
Zitat:
Delphi-Quellcode:
Zu finden war es auch mit PosEx als Suchwort hier in der DP. Aber du hast ja jetzt eine Lösung - und sogar ohne die Rekursionsfalle. Schönen Sonntag noch.
function PosEx(const SubStr, S: string; Offset: integer): integer;
begin Result := Pos(SubStr, Copy(S, OffSet, Succ(Length(S) - OffSet))); if Result > 0 then Result := Result + Pred(Offset); end; marabu |
Re: mehrere Tokens aus string löschen
delphi (ab 5) hat standardmaessig stringersetzungsfunktionen. wieso benutzt du die nicht??
|
Re: mehrere Tokens aus string löschen
Welche denn ?
|
Re: mehrere Tokens aus string löschen
Moin moin,
wie wäre es mit StringReplace (SysUtils)? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 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