Entwickler-Ecke

Internet / Netzwerk - Mail zum Versand eröffnen


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), nilnil, 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 user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: 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:
user profile iconBelli hat folgendes geschrieben Zum zitierten Posting springen:

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)nilnil, 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).