繁体   English   中英

Delphi 2010错误E2010不兼容类型:'AnsiChar'和'Char'

[英]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作为基本字符串类型时,他们重新UnicodeStringWindows单元中的许多winapi头,以解析相同的widechar版本的例程。字符串。

所以检查你发送给它的是什么。 如果需要PChar ,请使用thoiz_vd的答案。 但是,如果它期待一个PAnsiChar ,重新宣布pAddrPAnsiChar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM