Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Daten aus Delphi in Thunderbird einfügen. (https://www.delphipraxis.net/199668-daten-aus-delphi-thunderbird-einfuegen.html)

oldmann 10. Feb 2019 18:46

Delphi-Version: 10.2 Tokyo

Daten aus Delphi in Thunderbird einfügen.
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

Ich arbeite mit Delphi Tokyo 10.2 und Windows 10.
Ich bin dabei aus einem Delphi Programm Daten in ein Memo einzulesen und dann das Memo in mein E-Mail Programm Thunderbird exportieren.
In der Memo sind die Daten ordentlich formatiert.
Wenn Sie aber im E-Mailprogramm eingefügt wurden ist jegliche Formatierung verschwunden.
Die im Memo eingefügten Leerzeichen sind alle verschwunden.
Das ist mir eigentlich unverständlich, da Leerzeichen ja auch Zeichen sind.
Ich habe mal 2 Screenshots angehängt.
Das erste "Kosten000.jpg" zeigt wie die Daten im Memo aussehen und das zweite "Thunderbird000.jpg" zeigt wie sie in der E-Mail ankommen.

Vielleicht weiß ja jemand von Euch wie man das Problem lösen kann.
Ich möchte schon gerne, dass Die Daten in der E-Mail genauso formatiert werden wie sie in der Memo sind.
Ich würde mich freuen, wenn mir jemand hier helfen könnte.

Gruß Oldmann

Delphi.Narium 10. Feb 2019 19:12

AW: Daten aus Delphi in Thunderbird einfügen.
 
Sind im Memo Tabulatoren, so dass der Text dort optisch anders formatiert ist?

Auf welchem Weg bekommst Du überhaupt die Daten ausgetauscht? Geht auf dem "Weg" was verloren?

Ohne genauere Infos zur Art der Datenübergabe, kann man da kaum sinnvolle Hilfestellung geben. Die Info "Ich hab' zwei Programme und die Daten aus dem einen sehen im anderen anders aus!", ist etwas dürftig.

Wenn im Delphiprgramm die Auffüllung zwischen Text und Betrag per Leerzeichen erfolgt, könnte es auch sein, dass auf dem Weg nach Thunderbird mehrfache Leerzeichen durch ein einzelnes Leerzeichen ersetzt werden. Könnte bei Tabulatoren analog sein.

Luckie 10. Feb 2019 21:03

AW: Daten aus Delphi in Thunderbird einfügen.
 
Nö. Die Leerzeichen sind noch da. Sie nach den Ziffern von der Nummerierung. Was aber verloren geht, scheinen die Tabs (#9) zu sein.

Delphi.Narium 10. Feb 2019 21:20

AW: Daten aus Delphi in Thunderbird einfügen.
 
Nö, es scheint immer nur ein Leerzeichen da zu sein, ob es vorher mal viele waren oder Tabs oder 'ne beliebige Kombination aus Leerzeichen und/oder Tabs, kann man den Screenshots nicht entnehmen.

blawen 10. Feb 2019 23:16

AW: Daten aus Delphi in Thunderbird einfügen.
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1425211)
Nö, es scheint immer nur ein Leerzeichen da zu sein, ob es vorher mal viele waren oder Tabs oder 'ne beliebige Kombination aus Leerzeichen und/oder Tabs, kann man den Screenshots nicht entnehmen.

Da im ersten Bild die Beträge jeweils ohne Versatz aufgelistet werden, müssen eigentlich Tabs im Spiel sein.

Schokohase 10. Feb 2019 23:24

AW: Daten aus Delphi in Thunderbird einfügen.
 
Zitat:

Zitat von blawen (Beitrag 1425213)
Zitat:

Zitat von Delphi.Narium (Beitrag 1425211)
Nö, es scheint immer nur ein Leerzeichen da zu sein, ob es vorher mal viele waren oder Tabs oder 'ne beliebige Kombination aus Leerzeichen und/oder Tabs, kann man den Screenshots nicht entnehmen.

Da im ersten Bild die Beträge jeweils ohne Versatz aufgelistet werden, müssen eigentlich Tabs im Spiel sein.

Sieht für mich nach Courier New aus und nur mit Leerzeichen (so hat es der OP auch gesagt)

Dalai 10. Feb 2019 23:31

AW: Daten aus Delphi in Thunderbird einfügen.
 
Vermutlich ist im Thunderbird HTML eingestellt für das Verfassen neuer Mails. Im Textmodus können auch mehrere aufeinanderfolgende Leerzeichen und vermutlich auch Tabs eingefügt werden.

Grüße
Dalai

oldmann 11. Feb 2019 09:19

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

erst mal Danke für das rege Interesse an meinem Problem.
Erst mal ein paar Hinweise zu Euren Fragen.
Thunderbird war zum Senden in HMTL und Reintext eingestellt.
Auch wenn ich nur Reintext einstelle ist das Problem das gleiche.
Im Memo ist "Courier New" eingestellt.
Die Zwischenräume sind mit Leerzeichen aufgefüllt.
Memo1 enthält den Text.
Memo1 wird gefülllt mit:
Form17.Memo1.Lines.Add(FilterGrid1.cells[0,2]+' '+zahl+' '+preis);
Der Datentransport sieht folgendermassen aus:

var
MMessage : TMapiMessage;
Fehler : Integer;
Empfaenger : Array[0..1] of TMapiRecipDesc;
Absender : TMapiRecipDesc;
m_text:string;
begin
If CheckBox1.checked = true Then m_text:=Memo2.Text;
with MMessage do begin
ulReserved := 0;
lpszNoteText := PAnsiChar(AnsiString(Memo1.text+#10+m_Text));
lpszSubject := PAnsiChar(AnsiString(Edit11.text));

lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;

// Absender festlegen
Absender.ulReserved:=0;
Absender.ulRecipClass:=MAPI_ORIG;
Absender.lpszName:= PAnsiChar('Absender');
Absender.lpszAddress:='';//PAnsiChar(AnsiString(Memo1.text)); //Emailadresse Absender
Absender.ulEIDSize:=0;
Absender.lpEntryID:=nil;

lpOriginator := @Absender;

//Empfänger festlegen ... hier ein Empfänger
nRecipCount := 1;
Empfaenger[0].ulReserved:=0;
Empfaenger[0].ulRecipClass:=MAPI_TO;
Empfaenger[0].lpszName:= PAnsiChar('');//Empfängername
if RadioButton1.Checked=True then
Empfaenger[0].lpszAddress:= PAnsiChar(AnsiString(Edit8.Text));//Emailadresse
if RadioButton2.Checked=True then
Empfaenger[0].lpszAddress:= PAnsiChar(AnsiString(Edit9.Text));//Emailadresse

// Empfaenger[0].lpszName:= PChar('');//Empfängername
// Empfaenger[0].lpszAddress:= PChar('');//Emailadresse
Empfaenger[0].ulEIDSize:=0;
Empfaenger[0].lpEntryID:=nil;

lpRecips := @Empfaenger;

nFileCount := 0;
lpFiles := nil;
end;
Fehler := MapiSendMail(0, 0, MMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
case fehler of
0 : ;
MAPI_E_USER_ABORT : showmessage('Nutzerabbruch');
else
showmessage('Fehler');
end;
Close;
Copy1;
end;

gruß Oldmann

ConnorMcLeod 11. Feb 2019 09:57

AW: Daten aus Delphi in Thunderbird einfügen.
 
Kannst Du vllt mal zu Fuß einfach Stringliterale einfügen, ohne das Ganze drumherum? Und beobachten, was drüben ankommt?
Delphi-Quellcode:
lpszNoteText := PAnsiChar(AnsiString('testblah'));
usw...

oldmann 11. Feb 2019 10:56

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

das sieht auch nicht besser aus.
Eingegeben habe ich:
'teststring abc'
Im Mailprogramm angekommen ist:
teststring abc

oldmann

oldmann 11. Feb 2019 11:01

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

zu meiner Antwort von eben.
Auch hier werden die Leerzeichen aus meiner Antwort entfernt.
Eingegeben habe ich:
'teststring abc'mit 6 Leerzeichen zwischen den Worten.
Es wird aber nur 1 Leerzeichen angezeigt.
Eigentlich das gleiche Problem wie meins.

oldmann

ConnorMcLeod 11. Feb 2019 11:10

AW: Daten aus Delphi in Thunderbird einfügen.
 
Das sieht auf den ersten Blick verdächtig nach einer HTML Formatierung/Darstellung aus. Dabei werden aus mehreren Leerzeichen Eines.
Mglw hast Du mittels Tabellen mehr Glück.

Delphi.Narium 11. Feb 2019 11:12

AW: Daten aus Delphi in Thunderbird einfügen.
 
In HTML-Ausgaben werden (für gewöhnlich) mehrfach vorkommende Leerzeichen ignoriert.
Als Quelltext:
Code:
"testtext     mit 6 Leerzeichen"
und einfach hier eingefügt: "testtext mit 6 Leerzeichen"
Das ist ein absolut normales, gewöhliches und gewolltes Verhalten und kein Implementierungsfehler (wo auch immer).

Möchte man die explizite Ausgabe von mehreren Leerzeichen, so sind diese durch   zu ersetzen.

https://www.w3schools.com/html/html_entities.asp

oldmann 11. Feb 2019 11:56

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

ich habe das probiert mit &nbsp.
Ich habe das einfach mit +&nbsp+ in den String eingefügt.
Da meckert Delphi mit 'Undeklarierter Bezeichner'.
Wie muß ich also das &nbsp verwenden???
Ein kleines Beispiel wäre Hilfreich.

Gruß oldmann

Delphi.Narium 11. Feb 2019 12:03

AW: Daten aus Delphi in Thunderbird einfügen.
 
Du muss die Leerzeichen durch   ersetzen. AnsiReplacetext,StringReplace oder sowas.

  ist Text, eine Zeichenfolge, und hat nichts mit Delphi zu tuen, sondern ist das geschützte Leerzeichen in HTML.

https://wiki.selfhtml.org/wiki/HTML/...ichencodierung

oldmann 11. Feb 2019 13:09

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

ich habe jetzt versucht, so wie ich es verstanden haben mit
StringReplace(grid,' ',&nbsp); die Leerzeichen umzuwandeln.
Die Variable grid enthält 30 Leerzeichen.
Leider wird in Delphi das Zeichen &nbsp als 'Undeklarierter Bezeichner' nicht erkannt.

Was mache ich Verkehrt ??

Gruß oldmann

Delphi.Narium 11. Feb 2019 13:12

AW: Daten aus Delphi in Thunderbird einfügen.
 
  ist eine String, eine Zeichenfolge und kein Delphibefehl.

Strings packt man in '

Also bitte:
Delphi-Quellcode:
StringReplace(grid,' ','&nbsp',[rfReplaceAll]);
!

oldmann 11. Feb 2019 13:21

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

ich habe es gerade Probiert,StringReplace(grid,' ','&nbsp');
Fehlermeldung:
Es gibt keine Überladene Version von StringReplace, die man mit diesen Argumenten aufrufen kann.

Wie kann ich das ändern.

Gruß oldmann

Delphi.Narium 11. Feb 2019 13:27

AW: Daten aus Delphi in Thunderbird einfügen.
 
Zitat:

Zitat von Delphihilfe
Delphi-Syntax:

function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

Delphi-Quellcode:
stringreplace(grid, ' ', ' ',[rfReplaceAll]);

oldmann 11. Feb 2019 15:23

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

ich habe meine Leerstrings die ich zur Formatierung eingesetzt habe, jetzt mit stringreplace(grid, ' ', ' ',[rfReplaceAll]); behandelt.
Die Fehlermeldung ist zwar weg, aber die Daten in der Email sehen genauso aus wie zuvor.

Gruß oldmann

Delphi.Narium 11. Feb 2019 16:01

AW: Daten aus Delphi in Thunderbird einfügen.
 
Zeig doch bitte mal den kompletten Quellcode, so ist das doch nur eine erbärmliche Raterei, wo denn da jetzt bitteschön das Problem liegen könnte.

Hast Du Dir mal den Quelltext der Mail anzeigen lassen (sollte gewöhnlich mit dem Menü unter der rechten Maustaste gehen). Sind dort die   enthalten?

Stringreplace ist eine Funktion, die den veränderten Inhalt liefert. Hast Du den auch irgendwie/-wo ... zugewiesen?
Delphi-Quellcode:
DasIstDieStringVariabelMit_nbsp := stringreplace(DasIstDieStringvariabelMitLeerzeichen, ' ', ' ',[rfReplaceAll]);

oldmann 11. Feb 2019 19:06

AW: Daten aus Delphi in Thunderbird einfügen.
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

der Quelltext mit dem die E-Mail aus Delphi versand wird, ist weiter vorne auf Seite 1 enthalten.
Ich habe noch einmal 2 Bilder angehängt.
Mit Bild1 mit Namen 'Grid' zeigt wie die Umwandlung mit
grid_n:=stringreplace(grid, ' ', ' ',[rfReplaceAll]);
nach Grid_n geschieht.
Das 2. Bild mit Namen Grid_n zeigt die Umwandlung.
Was ich nicht verstehe ist, in Grid waren 30 Leerzeichen.
In der Variable Grid_n war nach der Umwandlung nur 5 mal &nbsp.
Wie man sich den Quelltext der Mail anzeigen lassen kann, konnte ich nicht finden.

Gruß oldmann

mjustin 11. Feb 2019 20:30

AW: Daten aus Delphi in Thunderbird einfügen.
 
Zitat:

Zitat von oldmann (Beitrag 1425295)

Wie man sich den Quelltext der Mail anzeigen lassen kann, konnte ich nicht finden.

* Mail doppelklicken um sie in einem eigenen Tab anzuzeigen
* rechts oben auf Menüpunkt "Mehr" klicken, darunter dann "Quelltext anzeigen"
* es öffnet sich die Quelltext-Ansicht

oldmann 12. Feb 2019 08:54

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

den Quelltext in der E-Mail anzeigen, habe ich gefunden.
Leider kann ich daraus absolut nichts erkenen.
So wie es aussieht, funktioniert die Umwandlung bei mir nicht wie gewünscht.
Wenn ich den formatierten Text aus der Memo kopiere und dann in Thunderbird einfüge werden alle Leerzeichen korrekt angezeigt.
Auf dem Weg über Delphi leider nicht.
Vielleicht kennt noch jemand einen anderen Weg?
Wäre schön.

Gruß oldmann

Schokohase 12. Feb 2019 09:31

AW: Daten aus Delphi in Thunderbird einfügen.
 
Es wäre schön wenn du uns deinen aktuellen Delphi-Quellcode zeigen würdest und den Quelltext der Mail.

Aber bitte nicht als Bild/Screenshot!

Einfach den Text per Copy/Paste hier in die Delphi-Tags (Delphi-Quellcode) oder in die Code-Tags (Quelltext der Mail). Meinethalben auch als Anhang.


Entschuldige bitte, aber das scheint im Moment niemanden zu stören und ich möchte den Moderatoren hier das Moderarotiern nicht wegnehmen. Also den Text einfach so hier reinklatschen oder als Screenshot. Hilft zwar keinem und du wirst auch keine vernünftige Hilfe bekommen, aber das ist auch nicht meine Baustelle.

oldmann 12. Feb 2019 15:22

AW: Daten aus Delphi in Thunderbird einfügen.
 
Hallo,

ich habe den Quelltext von Delphi schon auf Seite 1 veröffentlicht.
Von der Memo und von Thunderbird habe ich Screenschots mitgeschickt.
Ich denke die Sache ist ausgereizt.
Ich habe jetzt statt Leerzeichen den'.' genommen.
Das sieht zwar nicht unbedingt super aus, aber es erfüllt seinen Zweck.
Ich möchte mich bei allen die sich hier Gedanken gemacht haben, ganz herzlich bedanken und die Angelegenheit hier abschließen.
Vielleicht ergibt sich später nochmal eine Lösung des Problems.
Also nochmal danke.

Gruß oldmann:hi:

MichaelT 14. Feb 2019 15:53

AW: Daten aus Delphi in Thunderbird einfügen.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Tools - Account Settings - Composition and Addressing
Erste Zeile: Compose Messages in HTML Format - uncheck
Funktioniert bei mir.

Zitat:

Zitat von oldmann (Beitrag 1425357)
Hallo,

ich habe den Quelltext von Delphi schon auf Seite 1 veröffentlicht.
Von der Memo und von Thunderbird habe ich Screenschots mitgeschickt.
Ich denke die Sache ist ausgereizt.
Ich habe jetzt statt Leerzeichen den'.' genommen.
Das sieht zwar nicht unbedingt super aus, aber es erfüllt seinen Zweck.
Ich möchte mich bei allen die sich hier Gedanken gemacht haben, ganz herzlich bedanken und die Angelegenheit hier abschließen.
Vielleicht ergibt sich später nochmal eine Lösung des Problems.
Also nochmal danke.

Gruß oldmann:hi:


mjustin 19. Feb 2019 12:31

AW: Daten aus Delphi in Thunderbird einfügen.
 
Mit der Jedi Code Library und Outlook getestet funktioniert dieser Code, der die Property "HtmlBody" setzt.
Der HTML Body wird von JclMapi dann in ein HTML Attachment umgewandelt.

Delphi-Quellcode:
uses
  JclMapi;

procedure TForm1.Button1Click(Sender: TObject);
var
  Msg: TJclEmail;
begin
  Msg := TJclEmail.Create;
  try
    Msg.HtmlBody := True;
    Msg.Body := '<html><pre>123 (hier weitere Leerzeichen...) 456</pre></html>';
    Msg.Send(True);
  finally
    Msg.Free;
  end;
end;
(getestet mit Delphi 2009)


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