Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringReplace will nicht? (https://www.delphipraxis.net/117816-stringreplace-will-nicht.html)

Tommy1988 25. Jul 2008 14:27


StringReplace will nicht?
 
Folgendes Problem.

Ich möchte gerne BBCode aus Memo1 ersetzen und in Memo2 schreiben lassen:

Delphi-Quellcode:
procedure TForm1.Check(sMemo: TMemo);
var
nMemo: String;
begin
nMemo := sMemo.Lines.Text;
Memo2.Lines.Text :=
StringReplace(nMemo, '[color=', '<font color=#',
[rfReplaceAll, rfIgnoreCase]);

Memo2.Lines.Text :=
StringReplace(nMemo, '[b]', '[b]', [rfReplaceAll]);

Memo2.Lines.Text :=
StringReplace(nMemo, '[/b]', '[/b]', [rfReplaceAll]); // HIER
LoadHTMLToWebbrowser(WebBrowser1, SynMemo2.Lines);
end;
Aber irgentwie will nur das in der markierten Zeile funktionieren, das drüber und drunter geht nicht

sirius 25. Jul 2008 14:30

Re: StringReplace will nicht?
 
Du musst schon immer nMEmo als Ergebnis von Stringreplace verwenden und erst am Ende dies dem Memo2 zuweisen.

Tommy1988 25. Jul 2008 14:32

Re: StringReplace will nicht?
 
Das verstehe ich jetzt nicht so ganz :?

Edit: Achso, der Aufruf von Check ist dieser:
Delphi-Quellcode:
Check(Memo1);

Sherlock 25. Jul 2008 14:34

Re: StringReplace will nicht?
 
Stringreplace ist eine Funktion. Im Ergebnis kommt der String, in dem der Austausch durchgeführt wurde ;)

Wenn Du also einfach nur so Stringreplace ausführst, passiert nichts, es sei denn Du weist das Ergebnis einem String zu.

Sherlock

Tommy1988 25. Jul 2008 14:36

Re: StringReplace will nicht?
 
Verstehe ich immernoch nicht :wall:

Macht man das nciht so? Das ERGEBNIS dem MEMO zuweisen? :oops:

sirius 25. Jul 2008 14:36

Re: StringReplace will nicht?
 
Delphi-Quellcode:
  nMemo := sMemo.Lines.Text;
  nMemo:=  //ändern
  StringReplace(nMemo, '[color=', '<font color=#',
  [rfReplaceAll, rfIgnoreCase]);

  nMemo := //ändern
  StringReplace(nMemo, '[b]', '[b]', [rfReplaceAll]);

  nMemo := //ändern
  StringReplace(nMemo, '[/b]', '[/b]', [rfReplaceAll]); // HIER

  Memo2.lines.text:=nMemo; //neu

Sherlock 25. Jul 2008 14:37

Re: StringReplace will nicht?
 
Ich nutze mal die Delphi-Hilfe zur Erklärung:
Zitat:

Die Funktion gibt einen String mit ersetzten Sub-Strings zurück.
Alles klar?

Edit: Eigentlich machst Dus ja richtig...ich bin raus. Das Problem ist die Zuweisung an das Memo...SORRY!!

Sherlock

worker 25. Jul 2008 14:37

Re: StringReplace will nicht?
 
Zitat:

Zitat von Sherlock
Stringreplace ist eine Funktion. Im Ergebnis kommt der String, in dem der Austausch durchgeführt wurde

Das weiß er wohl. Er hat nur, wie sirius schon anmerkt, einen Denkfehler.

Er ersetzt jedesmal den Text von nMemo, d.h. nur die letzte Ersetzung steht abschließend in Memo2.

Also entweder wie sirius sagt, das Ergebnis immer nMeom zuweisen und dieses am Schluß an Memo2, oder immer Memo2.Text an StringReplace übergeben (außer beim ersten Mal).

Tommy1988 25. Jul 2008 14:44

Re: StringReplace will nicht?
 
So, sry jetzt hab ich endlich den Kopf frei. Wenn man von allen Seiten (hier zuhaus) zugequatscht wird bekomtm man nix mehr hin.

Mitlerweile habe ich es verstanden und MEINEN DENKFEHLER auch gefunden :oops:

Tommy1988 25. Jul 2008 16:18

Re: StringReplace will nicht?
 
Hab da aber schon ein neues Problem, was ich nicht geregelt bekomme

Folgender Code steht im OnChange des Memo1
Delphi-Quellcode:
Memo1.Lines.Text :=
StringReplace(Memo1.Lines.Text, '[color='+
ColorToHex(JvColorButton1.Color)+']', '<font color=#'+
ColorToHex(JvColorButton1.Color)+'>',
[rfReplaceAll, rfIgnoreCase]);

Memo1.Lines.Text := StringReplace(Memo1.Lines.Text, '[/color]', '</font>',
[rfReplaceAll, rfIgnoreCase]);

Memo2.Lines.Text := Memo1.Lines.Text;
Wenn ich jetzt auf einen Button klicke und zuvor einen Farbe aus dem JvColorButton ausgewählt habe,
wird diese auch ordnungsgemäß hinzugefügt. Im WebBrowser stimmt auch die Farbe.

Führe ich dies jedoch ein zweites Mal aus, so setzt er den 2. Text in die richtige Farbe, aber den
ersten wieder in "Schwarz" ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 Uhr.
Seite 1 von 2  1 2      

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