Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi中的PWide字符和字符串混淆试图发送电子邮件_Delphi_Delphi Xe - Fatal编程技术网

Delphi中的PWide字符和字符串混淆试图发送电子邮件

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

程序返回错误,应为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


…知道为什么吗?

您所要做的就是将字符串放入
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