Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
kann mir das mal jemand so aufbereiten das es bei mir funktioniert?<br>void replace(String &text,String such, String ersetz, bool all=true)<br>
{<br>
int pos;<br>
pos=text.Pos(such);<br>
while(pos>0)<br>
{<br>
text.Delete(text.Pos(such),such.Length());<br>
text.Insert(ersetz,pos);<br>
if(all==false)<br>
break;<br>
pos=text.Pos(such);<br>
}<br><br>
}<br>
Zu Ende gebrütet. Das Programm hat sich nicht aufgehangen, sondern die Routine hat sich sich beendet, da nach einem Zeichen gesucht wurde und diese durch ein gleiches ersetzt wurde (wenn auch durch mehrere). Es gab also eine Endlosschleife. Fehler von mir, habe nicht bedacht, dass man doch bedarf für sowas hat.
Die folgende Routine sollte dieses Mank beheben.
Denke daran, dass die \ Sonderzeichen sind suche also wie folgt:
<pre>
String muster=Edit1->Text;
replace(muster,"\\","\\\\");
Edit1->Text=muster;
<pre>
Hat bei mir funktioniert. Wäre über eine Rückantwort, ob die Rountine jetzt einwandfrei läuft dankbar. ([email protected])
<pre>
void replace(String &text,String such, String ersetz, bool all=true)
{
int pos,x,l;
String teil;
l=text.Length();
for(x=1;x<l+1;x++)
{
teil=text.SubString(x,such.Length());
if(teil==such)
{
text.Delete(x,such.Length());
text.Insert(ersetz,x);
x+=ersetz.Length()-1;
l=text.Length();
}
if(all==false)
break;
}
}
<pre>
Comment