开发者

Delphi 2010 Error E2010 Incompatible types: 'AnsiChar' and 'Char'

开发者 https://www.devze.com 2023-03-22 22:18 出处:网络
I loaded up some old code from Delphi Magazine and when I compile it inside Delphi 2010 I get an E2010 Incompatible types: \'AnsiChar\' and \'Char\'.

I loaded up some old code from Delphi Magazine and when I compile it inside Delphi 2010 I get an E2010 Incompatible types: 'AnsiChar' and 'Char'.

How do I resolve this error?

pAddr := in开发者_开发百科et_ntoa(AddrIn.sin_addr);

pAddr defined as PChar

inet_ntoa is a function that returns PAnsiChar


Use an AnsiString and a String to safely perform the necessary casts.

MyAnsiString := AnsiString(inet_ntoa(AddrIn.sin_addr));
MyString := String(MyAnsiString);
pAddr := PChar(MyString);


That depends on what you're trying to do with it. Are you using the address yourself, or are you passing it to external code?

If you're using it yourself, try thoiz_vd's answer. As a general rule, keep as much of your internal string processing on the string type as you can. It'll save you a lot of hassle.

On the other hand, if you're passing it to an external routine, like something in the Windows API, you have to make sure the data is in the format that the API is expecting. This is a bit less clear-cut than the first case, because when Delphi transitioned from AnsiString to UnicodeString as the fundamental string type, they redid a lot of the winapi headers in the Windows unit to resolve to equivalent widechar versions of the routines that took strings.

So check what you're sending it to. If it requires a PChar, use thoiz_vd's answer. But if it's expecting a PAnsiChar, redeclare pAddr as PAnsiChar.

0

精彩评论

暂无评论...
验证码 换一张
取 消