AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo Field HTML Linebreaks einfügen

Ein Thema von Mike_ · begonnen am 24. Mai 2012 · letzter Beitrag vom 24. Mai 2012
Antwort Antwort
Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#1

Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 10:49
Delphi-Version: 2007
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
Delphi-Nachwuchs

Geändert von Mike_ (24. Mai 2012 um 10:52 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 10:53
Guten Morgen,

kannst Du da nicht mit StringReplace arbeiten und #10#13 durch <br> ersetzen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Mike_

Registriert seit: 26. Mär 2008
98 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 11:01
Guten Morgen,

kannst Du da nicht mit StringReplace arbeiten und #10#13 durch <br> ersetzen?

Grüße
Klaus
Gute Idee!
Leider klappt es noch nicht ganz... sieht aus wie vorher.

Hier mein Code:

Delphi-Quellcode:
[...]
  after : String;
[...]
              after := StringReplace(Memo1.Text, '#10#13', '<br/>',
                          [rfReplaceAll, rfIgnoreCase]);
[...]

               Add(after);
Update:

So klappt es, danke :

Delphi-Quellcode:
              after := StringReplace(Memo1.Text, #13#10, '<br/>',
                          [rfReplaceAll, rfIgnoreCase]);
Delphi-Nachwuchs

Geändert von Mike_ (24. Mai 2012 um 11:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#4

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 11:04
Nimm doch die Konstante sLineBreak, die ist auch korrekt mit #13#10 (und nicht andersherum) deklariert.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 11:09
.. #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
Klaus
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#6

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 11:27
Kurz und Schmerzlos:

Delphi-Quellcode:
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;
In der Variable S steht dein HTML Text, bzw. Text mit BR-Tags.

//Edit:

Oder wenn es im Memofeld sein soll:

Delphi-Quellcode:
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;
Die Zeilen if not (i = (Memo1.Lines.Count - 1)) then sind dazu da, damit die letzte Zeile ausgeschlossen wird. Kann man auch weglassen, dann hat die letzte Zeile auch ein BR-Tag.

Geändert von Popov (24. Mai 2012 um 11:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#7

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 11:34
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (24. Mai 2012 um 11:38 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 11:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#9

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 11:49
Schade, aber wenn es nicht grade um ein Memo ging, dann auch so.
Delphi-Quellcode:
SL.LineBreak := '<br>';
S := SL.Text;
SL.LineBreak := sLineBreak;
Denn interne TMemoStrings ignoriert beim GetText das LineBreak.
Schade daß der Delimiter für DelimitedText nur ein Char ist, denn der funktioniert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Mai 2012 um 11:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Memo Field HTML Linebreaks einfügen

  Alt 24. Mai 2012, 12:28
Mein Memofeld übergibt die Linebreaks nicht, so dass nur ein laaaange String in die Mail geparsed wird.
entschuldigung, wo ist da das Problem? die CRLF (#13#10) haben in Textverarbeitungsprogrammen und in den mir bekannten Mail-Programmen die Funktion einer "Absatzmarke" bekommen. Im allg. ist es so, daß Text an die Darstellungsgröße angepasst dargestellt wird. Nicht umsonst kennt TMemo das Wordwrap. Hast Du es denn schon mal mit einem "ordentlich" erfassten Text versucht?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz