D5 Std. Replacedialog

Hallo!
Wie schaffe ich es daß TReplaceDialog wenn ich auf „Alles ersetzen“ klicke wirklich alle Vorkommen von FindText durch ReplaceText ersetzt und nicht immer nur die nächste gefundene Übereinstimmung mit FindText? Gibts da irgendwas was man übersehen kann? In den Optionen frReplaceAll auf True zu setzen bringt gar nichts.

Development Tool / Sprache? Grüsse Peter
o.T. Grüsse Peter

o.T. Grüsse Peter

Tool: Delphi 5 Standard - Sprache: folglich Object Pascal

:wink:

Bye
Alex

Wie schaffe ich es daß TReplaceDialog wenn ich auf „Alles
ersetzen“ klicke wirklich alle Vorkommen von FindText durch
ReplaceText ersetzt und nicht immer nur die nächste gefundene
Übereinstimmung mit FindText? Gibts da irgendwas was man
übersehen kann? In den Optionen frReplaceAll auf True zu
setzen bringt gar nichts.

Also zunächst mal ersetzt - wenn ich das richtig verstehe - der TReplaceDialog selbst garnicht, sondern stellt eben nur den Dialog zur Verfügung.
D.h. du musst im OnReplace Ereignis entsprechenden Code schreiben, der überprüft ob „frReplaceAll in ReplaceDialog.Options“ und dementsprechend in z.B. einer While Schleife alle Vorkommnisse in deinem Text ersetzen.

Bye
Alex

genau darum geht’s! ich krieg es einfach nur hin daß immer nur ein Zeichen ersetzt wird. Wenn ich SelStart mit der gefundenen Position des gefundenen Teilstrings belege und SelLength auf die Länge von TReplaceDialog.FindText dann hab ich ja genau den text markiert der ersetzt werden soll. Jetzt SelText := ReplaceText; und es sollte eigentlich ersetzt werden. Komischerweise immer nur das erste Vorkommen. Wie kann ich dafür sorgen daß er weiter nach dem nächsten Vorkommen sucht. Und noch wichtiger, wie kann ich nur innerhalb eines markierten Textstückes ersetzen lassen?
Mit SelStart usw. is dann ja Essig.

D.h. du musst im OnReplace Ereignis entsprechenden Code
schreiben, der überprüft ob „frReplaceAll in
ReplaceDialog.Options“ und dementsprechend in z.B. einer While
Schleife alle Vorkommnisse in deinem Text ersetzen.

genau darum geht’s! ich krieg es einfach nur hin daß immer nur
ein Zeichen ersetzt wird. Wenn ich SelStart mit der gefundenen
Position des gefundenen Teilstrings belege und SelLength auf
die Länge von TReplaceDialog.FindText dann hab ich ja genau
den text markiert der ersetzt werden soll. Jetzt SelText :=
ReplaceText; und es sollte eigentlich ersetzt werden.
Komischerweise immer nur das erste Vorkommen. Wie kann ich
dafür sorgen daß er weiter nach dem nächsten Vorkommen sucht.
Und noch wichtiger, wie kann ich nur innerhalb eines
markierten Textstückes ersetzen lassen?
Mit SelStart usw. is dann ja Essig.

hmm… wie genau suchst du denn nach dem Text?
ein bisschen Code wäre vielleicht sinnvoll …

Bye
Alex

schau dir mal die Funktion StrReplace an…
damit erschlägst alle Probleme

Gruss Rüdiger

schau dir mal die Funktion StrReplace an…
damit erschlägst alle Probleme

Wo gibt’s die / bzw. in welchem Objekt?
Also mein Delphi 5 Ent. kennt diese Funktion nicht …

Bye
Alex

Die Funktion heißt StringReplace…

Gruß Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die Funktion heißt StringReplace…

Nette Funktion … da staunt man mal wieder, was Delphi so alles kann …

Bye
Alex