Belli - Di 18.02.14 17:42
Titel: Mail zum Versand eröffnen
Folgende Procedure hatte früher funktioniert, um eine Mail zum Versand zu öffnen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure SendEMail(Empfaenger:AnsiString; Betreff,Anrede:string); var S : AnsiString; begin S:='mailto:'+Empfaenger+'?subject='+Betreff+'&body='+Anrede; ShellExecute(Application.Handle, 'open',PChar(S), nil, nil, sw_ShowNormal); end; |
Wenn ich diesen Quelltext mit Delphi10 unter Windows 7 kompiliere, dann erscheint zwar keine Fehlermeldung, es passiert aber auch nichts beim Aufruf. Warum funktioniert das nicht mehr?
mfG
Belli
Moderiert von Narses: Delphi-Tags hinzugefügtModeriert von Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 18.02.2014 um 19:41
jaenicke - Mi 19.02.14 07:58
Hallo und :welcome:
Delphi10 gibt es nicht. Wenn du damit Delphi 2010 meinst, sollte dir eigentlich dort eine Warnung wegen einer bedenklichen Typumwandlung angezeigt werden:
Belli hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure SendEMail(Empfaenger:AnsiString; Betreff,Anrede:string); var S : AnsiString; begin S:='mailto:'+Empfaenger+'?subject='+Betreff+'&body='+Anrede; ShellExecute(Application.Handle, 'open',PChar(S), nil, nil, sw_ShowNormal); end; | |
Du benutzt einen konkreten Stringtyp, nämlich AnsiString, und castest den auf einen allgemeinen Pointertyp, nämlich PChar, und übergibst das an die allgemeine ShellExecute-Funktion.
Entweder du nimmst überall Ansi (AnsiString, PAnsiChar, ShellExecuteA) bzw. Unicode (UnicodeString, PWideChar, ShellExecuteW), wofür ich allerdings keinen Grund sehe, oder du nimmst immer die allgemeinen (String, PChar, ShellExecute).