[英]Delphi 2010 Error E2010 Incompatible types: Char' and 'AnsiChar'
[英]Delphi 2010 Error E2010 Incompatible types: 'AnsiChar' and 'Char'
我从Delphi杂志中加载了一些旧代码,当我在Delphi 2010中编译它时,我得到了一个E2010不兼容的类型:'AnsiChar'和'Char'。
我该如何解决这个错误?
pAddr := inet_ntoa (AddrIn.sin_addr);
pAddr定义为PChar
inet_ntoa是一个返回PAnsiChar的函数
使用AnsiString和String来安全地执行必要的强制转换。
MyAnsiString := AnsiString(inet_ntoa(AddrIn.sin_addr));
MyString := String(MyAnsiString);
pAddr := PChar(MyString);
这取决于你正在尝试用它做什么。 您是自己使用地址,还是将其传递给外部代码?
如果您自己使用它,请尝试thoiz_vd的答案。 作为一般规则,尽可能多地保留字符串类型的内部字符串处理。 它会为你省去很多麻烦。
另一方面,如果您将其传递给外部例程(如Windows API中的某些内容),则必须确保数据采用API期望的格式。 这比第一种情况稍微不那么明确,因为当Delphi从AnsiString
转换为UnicodeString
作为基本字符串类型时,他们重新UnicodeString
了Windows
单元中的许多winapi头,以解析相同的widechar版本的例程。字符串。
所以检查你发送给它的是什么。 如果需要PChar
,请使用thoiz_vd的答案。 但是,如果它期待一个PAnsiChar
,重新宣布pAddr
为PAnsiChar
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.