2012-03-23 74 views
0

程序返回的错误,预期的替代串PWide字符和字符串混淆在Delphi尝试发送电子邮件

procedure TForm1.Button1Click(Sender: TObject); 
var 
    mailtoStr, subject, body : string; 
begin 
mailtostr := 'mailto:[email protected]'; 
subject := '?Subject=Email Subject'; 
body := '&Body=Email Body'; 
ShellExecute(Self.Handle, 
      nil, 
      mailtostr + 
      subject+ 
      body, 
      nil, 
      nil, 
      SW_NORMAL); 
end; 

所以我改变了我的代码PWideChar ...

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

StringToWideChar绝对不是你所需要的。它做了完全不同的事情。忘记一切。 – 2012-03-23 20:24:18

回答

4

您只需要将PChar()中的字符串“投射”到PChar即可。

procedure TForm1.Button1Click(Sender: TObject); 
var 
    mailtoStr, subject, body: string; 
begin 
    mailtostr := 'mailto:[email protected]'; 
    subject := '?Subject=Email Subject'; 
    body := '&Body=Email Body'; 
    ShellExecute(Self.Handle, 
       nil, 
       PChar(mailtoStr + subject + body), 
       nil, 
       nil, 
       SW_NORMAL); 
end; 
+0

谢谢!这个网站非常棒,每个人都非常有帮助,我花了很多时间试图弄清楚:L现场学习! :d – JamesB123 2012-03-23 20:41:11

相关问题