Autor Beitrag
Belli
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 18.02.14 17:42 
Folgende Procedure hatte früher funktioniert, um eine Mail zum Versand zu öffnen:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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).