Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Frage zu WideStringReplace (https://www.delphipraxis.net/162327-frage-zu-widestringreplace.html)

gaisser 17. Aug 2011 17:13

Frage zu WideStringReplace
 
Hallo Zusammen,

ich verzweifele hier noch.

Ich habe eine Datei mit Text, die ich über eine WideStringlist reinlade.
Nun habe ich ein MemoText(Unicode), den ich mittels WideStringReplace ersetzten will.
Also
so:
Delphi-Quellcode:
     if FileExists(IncludeTrailingBackslash(StartPath) + 'PKMailErsetzung\MailErsetzung_' + PKUser + '.mail') then
        begin
          xErsetzung := TStringList.Create;
          xErsetzung.LoadFromFile(IncludeTrailingBackslash(StartPath)
              + 'PKMailErsetzung\MailErsetzung_' + PKUser + '.mail');

          if xErsetzung.Text <> '' then
          begin
            body.Text := WideStringReplace(body.Text, xErsetzung.Text, '', [rfReplaceAll, rfIgnoreCase]);
            showmessage(xErsetzung.Text);
            showmessage(body.Text);
          end;
          xErsetzung.Free;
        end;
Das funktioniert so irgendwie nicht.
Geht das denn nicht, wenn ich Strings mit Strings ersetzten will ????

Achso: ich habe RadStudio 2010

DeddyH 17. Aug 2011 17:28

AW: Frage zu WideStringReplace
 
In der Hilfe steht:
Zitat:

WideStringReplace ersetzt im String S die Vorkommen des in OldPattern angegebenen Teilstrings durch den in NewPattern angegebenen Teilstring.
...
Anmerkung: Diese Funktion ist für WideString-Variablen entwickelt. Um die Ersetzung in einem UnicodeString-Kontext auszuführen, verwenden Sie die Funktion StringReplace. Um die Ersetzung in einem AnsiString-Kontext auszuführen, verwenden Sie ebenfalls die Funktion StringReplace.

Anmerkung: Das rekursive Ersetzen von Teilstrings wird nicht unterstützt. Das bedeutet Folgendes: Wenn die Ersetzung von OldPattern eine neue Übereinstimmung für NewPattern ergibt, wird diese Übereinstimmung nicht ersetzt.

Um alle Vorkommen des Teilstrings in dem String zu ersetzen, können Sie auch die Funktionen WideReplaceStr (mit Berücksichtigung der Groß-/Kleinschreibung) oder WideReplaceText (ohne Berücksichtigung der Groß-/Kleinschreibung) verwenden.
Funktioniert es mit einer der genannten Alternativen?

gaisser 17. Aug 2011 19:07

AW: Frage zu WideStringReplace
 
Nein tut es oeider nicht....

Das Problem ist , ich will ne Mail von OL in mein Programm reinladen,
die Signatur soll aber nicht miterscheinen.

Vielleicht hat mir hier noch jemand einen anderen Anhaltspunkt

himitsu 17. Aug 2011 19:50

AW: Frage zu WideStringReplace
 
Zitat:

Zitat von gaisser (Beitrag 1117601)
Das funktioniert so irgendwie nicht.

Was funktioniert nicht?
Wenn es einfach nur nich ersetzt wird, dann stimmt wohl der Text nicht überein, was du nur selber prüfen kannst.


Und warum nicht einfach nur Delphi-Referenz durchsuchenStringReplace?
Seit Delphi 2009 ist das schon alles auf Unicode eingestellt.

gaisser 18. Aug 2011 07:20

AW: Frage zu WideStringReplace
 
Das Problem ist das wenn ich in meiner Textdatei

z.B.

Zitat:

Mit freundlichen Grüßen

Der Mann vom Mond
drinn habe, dann habe ich ja ein Carrige Return, das scheint dann aber StringReplace irgendwie zu ignorieren????

Ich kann auch nicht Zeile für Zeile durchgehen, weil der TExt "Mit freundlichen Grüßen" ja in anderer Form vorkommen kann.

DeddyH 18. Aug 2011 07:42

AW: Frage zu WideStringReplace
 
Sind das evtl. unterschiedliche Carriage Returns (also nicht #13#10, sondern z.B. UNIX-mäßig nur #10)? In dem Fall hättest Du eben keine exakte Übereinstimmung, weshalb dann auch nicht ersetzt wird. Sollte es wirklich daran liegen, kannst Du ja sichergehen, indem Du zuerst alle #13#10 durch #10, dann alle #13 (CR von MacOS AFAIK) durch #10 ersetzt und anschließend alle #10 durch sLineBreak. Geht es dann mit StringReplace?

himitsu 18. Aug 2011 08:16

AW: Frage zu WideStringReplace
 
Oder beide Strings mal kurz durch eine TStringList jagen, dann werden die Zeilenumbrüche auch angepaßt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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