![]() |
pos, posex, finden von Text
Hallo Leute
ich habe in einem String einen Text wie:
Code:
nun möchte ich im nächsten Schritt alle {xxx} durch bestimmte Werte ersetzten. Nur ich scheitere schon vorher:
<html>
<body bgcolor="{style[bgcolor]}"> Hallo {name}, wilkommen auf {page} </body> </html>
Delphi-Quellcode:
(i s befindet sich der HTML-Code)
start := pos('{',s);
while (start>0) do begin; stop := posex ('}',s,start); vname:=copy(s,start,stop-start); showmessage(vname); start := pos('{',s); end; eigentlich hatte ich mir das jetzt so vorgestellt, das jede der Variablen (style[bgcolor],name,page) einmal angezeigt werden. Tun sie aber nicht, es kommt bloß dauernd die erste Stelle (style[bgcolor]). Woran liegt das? Und noch was: nein, ein TPageProducer hilft nichts, weil es auch mit der Personal laufen soll. Wer bessere Vorschläge für diesen Vorhaben hat, die schneller sind, bitte posten Danke und Grüße TO |
Re: pos, posex, finden von Text
Hi,
ich reduziere mal den Code:
Code:
Du setzt immer den Wert auf :
start := pos('{',s);
while (start>0) do begin; ... start := pos('{',s); end;
Code:
Am Anfang und in der WHILE - Schleife. Das Programm kann nicht so laufen. Es sei denn, { ist in s nicht enthalten.
pos('{',s);
|
Re: pos, posex, finden von Text
ich glaube schon das das geht:
ich speichere jedesmal in start, die position von '{' dann prüfe ich ob es 0 ist (nicht mehr gefunden) und breche dann ab! |
Re: pos, posex, finden von Text
Zitat:
Zitat:
Wie oft hast Du das Programm schon abgebrochen ??? |
Re: pos, posex, finden von Text
Moin The Omega,
ich kenn' jetzt posex nicht, vermute aber mal, dass es so etwas ähnliches ist, wie ![]() bei uns in der CodeLibrary. Am Besten solltest Du posex auch für Start verwenden, denn pos liefert Dir immer das erste Vorkommen, des gesuchten Strings im durchsuchten String. Da Du ja aber {style[bgcolor]} wohl nicht ersetzen willst, sondern nur {name} usw. hängt die Schleife, wie Hansa ja schon sagte, an immer der gleichen Start Position. |
Re: pos, posex, finden von Text
Hoi Dominik, ich hab deinen Code mal nen bissle Modifizert so dass er zumindest bei mir tut:
Delphi-Quellcode:
s := memo1.Lines.Text;
start := pos('{',s); while (start>0) do begin stop := posex ('}',s,start); vname:=copy(s,start+1,stop-start-1); showmessage(vname); zs:=Start+1; // letzte fundstelle von '{' + 1, es würde auch stop gehen. start := posex('{',s,zs); end; |
Re: pos, posex, finden von Text
Probier einfach mal die Funktion StringReplace aus. Hier ein Beispiel:
Delphi-Quellcode:
output := StringReplace(Input, 'xxx', 'y', rfReplaceAll);
//ersetzt alle vorkommenden xxx mit y |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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 by Thomas Breitkreuz