![]() |
Delphi-Version: 2007
Memo Field HTML Linebreaks einfügen
Hallo,
ich versende eine E-Mail als Contenttype text/html (via Indy). Mein Memofeld übergibt die Linebreaks nicht, so dass nur ein laaaange String in die Mail geparsed wird. Ich benötige die Linebreaks aus dem Memo in der Mail. Wie bekomme ich <br> o.Ä. in das Memofeld, damit die Absätze richtig angezeigt werden in der Mail? Z.Zt. wird es mit "AddStrings(MRequest.Lines);" in die Mail geparsed. Habe bereits nach "linebreak memo indy mail html delphi add" gegoogelt, ohne Ergebnis. Danke im Voraus, Mike |
AW: Memo Field HTML Linebreaks einfügen
Guten Morgen,
kannst Du da nicht mit StringReplace arbeiten und #10#13 durch <br> ersetzen? Grüße Klaus |
AW: Memo Field HTML Linebreaks einfügen
Zitat:
Leider klappt es noch nicht ganz... sieht aus wie vorher. Hier mein Code:
Delphi-Quellcode:
Update:
[...]
after : String; [...] after := StringReplace(Memo1.Text, '#10#13', '<br/>', [rfReplaceAll, rfIgnoreCase]); [...] Add(after); So klappt es, danke :) :
Delphi-Quellcode:
after := StringReplace(Memo1.Text, #13#10, '<br/>',
[rfReplaceAll, rfIgnoreCase]); |
AW: Memo Field HTML Linebreaks einfügen
Nimm doch die Konstante sLineBreak, die ist auch korrekt mit #13#10 (und nicht andersherum) deklariert.
|
AW: Memo Field HTML Linebreaks einfügen
.. #10#13 nicht als StringKonstante einfügen, also ohne ''.
Bin mir jetzt auch nicht 100% sicher ob #10#13 oder #13#10 .. Grüße Klaus |
AW: Memo Field HTML Linebreaks einfügen
Kurz und Schmerzlos:
Delphi-Quellcode:
In der Variable S steht dein HTML Text, bzw. Text mit BR-Tags.
var
s: String; i: Integer; begin s := ''; for i := 0 to Memo1.Lines.Count - 1 do begin s := s + Memo1.Lines[i]; if not (i = (Memo1.Lines.Count - 1)) then s := s + '<br>'; end; ShowMessage(s); end; //Edit: Oder wenn es im Memofeld sein soll:
Delphi-Quellcode:
Die Zeilen
var
i: Integer; begin for i := 0 to Memo1.Lines.Count - 1 do if not (i = (Memo1.Lines.Count - 1)) then Memo1.Lines[i] := Memo1.Lines[i] + '<br>'; end;
Delphi-Quellcode:
sind dazu da, damit die letzte Zeile ausgeschlossen wird. Kann man auch weglassen, dann hat die letzte Zeile auch ein BR-Tag.
if not (i = (Memo1.Lines.Count - 1)) then
|
AW: Memo Field HTML Linebreaks einfügen
Nur dass das Ergebnis bei eingeschaltetem WordWrap nicht stimmt. Die ständige String-Umkopiererei verbraucht auch eine Menge Zeit und Speicher, so dass ich die StringReplace-Variante da schon besser finde (selbst wenn die auch nicht unbedingt schnell ist).
[edit] OK, bei eingeschaltetem WordWrap passt auch Text nicht mehr, hatte ich verdrängt. [/edit] |
AW: Memo Field HTML Linebreaks einfügen
Ich meine, du hast schon Recht, aber ich gehe mal davon aus, dass es nur paar Zeilen sind, ich glaube der Zeitverlust hält sich in Grenzen.
|
AW: Memo Field HTML Linebreaks einfügen
Schade, aber wenn es nicht grade um ein Memo ging, dann auch so.
Delphi-Quellcode:
Denn interne TMemoStrings ignoriert beim GetText das LineBreak. :cry:
SL.LineBreak := '<br>';
S := SL.Text; SL.LineBreak := sLineBreak; Schade daß der Delimiter für DelimitedText nur ein Char ist, denn der funktioniert. |
AW: Memo Field HTML Linebreaks einfügen
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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