Delphi中的PWide字符和字符串混淆试图发送电子邮件
程序返回错误,应为PWideChar而不是字符串Delphi中的PWide字符和字符串混淆试图发送电子邮件,delphi,delphi-xe,Delphi,Delphi Xe,程序返回错误,应为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(S
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
…知道为什么吗?您所要做的就是将字符串放入
PChar()
中,将其“转换”到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;
您所要做的就是将字符串放入
PChar()
中,将其“转换”为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;
StringToWideChar绝对不是您需要的。它做了完全不同的事情。忘了它吧。StringToWideChar绝对不是您需要的。它做了完全不同的事情。算了吧,谢谢!!这个网站太棒了,每个人都很乐于助人,我花了很多时间试图弄明白:我生活和学习谢谢你!!这个网站太棒了,每个人都很乐于助人,我花了很多时间试图弄明白:我生活和学习D