gpt4 book ai didi

string - Delphi Embarcadero XE:使用String和PAnsiChar发出大量警告

转载 作者:行者123 更新时间:2023-12-03 18:56:50 30 4
gpt4 key购买 nike

我正在尝试从Delphi 2007迁移到Embarcadero RAD Studio XE。
我收到大量警告。
它们都看起来像这样:我有一个声明“字符串”的过程:

procedure SendMail( ADestinataire,ASubject : String);


我试图像这样调用Windows API:

  Res := MAPIResolveName(Session, Application.Handle,
PAnsiChar(ADestinataire), MAPI_LOGON_UI, 0, PRecip);


因此,警告是:


W1044:将字符串转换为PAnsiChar可疑对象。


我在做什么错/应该如何纠正(350条警告...)?

非常感谢你

最佳答案

MAPIResolveName使用LPSTR参数,在Delphi中为PAnsiChar。简单MAPI不支持UTF16字符串(尽管可以与UTF8字符串一起使用),因此,如果坚持使用简单MAPI,则应使用AnsiStrings,例如

procedure SendMail( ADestinataire,ASubject : AnsiString);


或者更好的可以使用

procedure SendMail( ADestinataire,ASubject : String);


并在调用MAPIResolveName之前将字符串参数显式转换为AnsiStrings



更新资料
整个 Simple MAPI现在已弃用;简单的MAPI可以与UTF8字符串一起使用,但是需要对 code and registry进行一些更改。

因此,如果问题在于将旧的ANSI Simple MAPI快速移植到Unicode Delphi,最好是坚持使用AnsiStrings。

一种更可靠的方法是完全放弃简单MAPI,而使用 Extended MAPI

关于string - Delphi Embarcadero XE:使用String和PAnsiChar发出大量警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6215170/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com