程序返回错误,预期的PWideChar而不是字符串
procedure TForm1.Button1Click(Sender: TObject);
var
mailtoStr, subject, body : string;
begin
mailtostr := 'mailto:theirEmail@hotmail.com';
subject := '?Subject=Email Subject';
body := '&Body=Email Body';
ShellExecute(Self.Handle,
nil,
mailtostr +
subject+
body,
nil,
nil,
SW_NORMAL);
end;
所以我把代码改为......
StringToWideChar('mailto:'+MailToStr+'?Subject=' + edSubject.Text+'&Body=' + edBody.Text, MailToWideChar, Length('mailto:'+MailToStr+'?Subject=' + edSubject.Text+'&Body=' + edBody.Text));
换句话说,把它全部放在一行上,然后把剩下的程序改为......
ShellExecute(Self.Handle,
nil,
MailToWideChar,
nil,
nil,
SW_NORMAL);
但是在StringToWideCharLine上遇到运行时异常错误:S
..任何想法为什么?
答案 0 :(得分:4)
您所要做的就是将字符串放在PChar()
内以“#cast;”#39;它是PChar
。
procedure TForm1.Button1Click(Sender: TObject);
var
mailtoStr, subject, body: string;
begin
mailtostr := 'mailto:theirEmail@hotmail.com';
subject := '?Subject=Email Subject';
body := '&Body=Email Body';
ShellExecute(Self.Handle,
nil,
PChar(mailtoStr + subject + body),
nil,
nil,
SW_NORMAL);
end;