Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Zeilenumbruch in String im ShellExecute (https://www.delphipraxis.net/162840-zeilenumbruch-string-im-shellexecute.html)

dude85 7. Sep 2011 00:47

Delphi-Version: 7

Zeilenumbruch in String im ShellExecute
 
Hallo Liebe Leute,

mioch hat nach einigen Jahren das Programmier-Fieber wieder gepackt. Eigentlich auch erfolgreich, besonders auch durch dieses Forum, aber jetzt habe ich eine Frage, zu der ich nichts finden konnte.

Folgende Situation:

Ich möchte einen String mit ShellExecute an Outlook übergeben. Formatiert habe ich die Zeilenumbrüche mit #13#10.
Leider werden die Umbrüche aber nicht an Outlook weitergegeben.

Der String:
Code:
gesamt := 'Der Kunde '+kdaten+ ' '+edit1.text+' '+edit2.text+' wünscht eine telefonische Beratung.' +#13#10+ 'Bitte beraten Sie zu folgenden Themen '+#13#10 +wunsch +#13#10+ 'Bemerkungen: '+bemerkungen +#13#10 +#13#10+ 'Meine Daten: ' +#13#10+'Name: '+ kollege+#13#10+ 'Personalnummer: '+persnr +#13#10+ 'Rückrufnummer: '+ handy;
Wenn ich das ganze im Memo oder ShowMessage ausgebe, dann stimmt die Formatierung. Bei der Übergabe in den Outlook-Body, sind aber die Zeilenumbrüche weg :cry:

Hier die Übergabe:

Code:
shellExecute(Application.Handle, 'open', PCHAR('mailto:'+email+'?subject=TOM&body='+gesamt) , nil, nil, SW_SHOW);
Ich denke, dass liegt daran, dass ich PCHAR benutzt habe und deswegen die Formatierung nicht übernommen wird.
Wenn ihr eine Idee oder Alternative kennt, dann bitte her damit.

DANKE im Vorraus und
schöne Grüße aus Wuppertal.

Michael

chaosben 7. Sep 2011 05:14

AW: Zeilenumbruch in String im ShellExecute
 
Hi Michael und ein herzliches Willkommen in der DP! :dp:

Wenn man diesem Beitrag glaubt, musst du anstelle der #13#10 %0D%0A nehmen.

himitsu 7. Sep 2011 09:11

AW: Zeilenumbruch in String im ShellExecute
 
Jupp, einfach alles, was vom ASCII abweicht oder ein Steuerzeichen darstellt und besser auch noch das %, mit %{hex}{hex} ersetzen.
Das Leerzeichen besser als + anstatt %20.
#32 > c < #128

DeddyH 7. Sep 2011 09:22

AW: Zeilenumbruch in String im ShellExecute
 
Vielleicht hilft das hier weiter: http://www.delphipraxis.net/159858-e...ooglemaps.html

dude85 7. Sep 2011 16:30

AW: Zeilenumbruch in String im ShellExecute
 
Danke vielmals. Hat geklappt mit %0D%0A!
Allerdings konnte ich die Parameter nicht in die Stringvariable packen, sondern musste sie in den PCHAR einfügen.
Siehe hier:

Code:
ShellExecute(Application.Handle, 'open',PCHAR('mailto:'+email+'?subject=TOM&body=Der Kunde %0D%0A'+kdaten+ ' '+edit1.text+' '+edit2.text+' wünscht eine telefonische Beratung.%0D%0A'+ 'Bitte beraten Sie zu folgenden Themen %0D%0A' +wunsch +'%0D%0A Bemerkungen: '+bemerkungen +'%0D%0A %0D%0A' + 'Meine Daten: %0D%0A Name: '+ kollege+'%0D%0A Personalnummer: '+persnr +'%0D%0A Rückrufnummer: '+ handy), nil, nil, SW_SHOW);
Nochmals vielen Dank!

@ DeddyH: Sehr gute Signatur!! :-D

DeddyH 7. Sep 2011 16:40

AW: Zeilenumbruch in String im ShellExecute
 
Danke :D. An Deiner Stelle würde ich aber eine Zwischenvariable einbauen, um die Übersicht zu erhöhen, ggf. sogar noch mit einem konstanten Formatstring.
Delphi-Quellcode:
const
  Mailtext = 'mailto:%s?subject=TOM&body=Der Kunde %%0D%%0A%s %s %s wünscht eine telefonische Beratung.' +
'%%0D%%0ABitte beraten Sie zu folgenden Themen %%0D%%0A%s%%0D%%0A Bemerkungen: %s%%0D%%0A %%0D%%0A' + 
'Meine Daten: %%0D%%0A Name: %s%%0D%%0A Personalnummer: %s%%0D%%0A Rückrufnummer: %s';
var
  Mailprogram: string;
begin
  Mailprogram := Format(Mailtext, [email, kdaten, edit1.text, edit2.text, wunsch, bemerkungen, kollege, persnr, handy]);
  ShellExecute(Application.Handle, 'open',PCHAR(Mailprogram), nil, nil, SW_SHOW);


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