delphi 中的常量 INADDR_NONE

constant INADDR_NONE in delphi

这是我的代码示例:

Result.S_addr := inet_addr(PAnsiChar(AnsiString(Address)));
if Result.S_addr = INADDR_NONE then
begin
  // codigo;
end;

'Result.S_addr' return -1 因为 'Address' 是一个 url。 INADDR_NONE 是一个常数,在 WINAPI 中定义为 'DWORD($FFFFFFFF)'。 理论上应该进入IF语句,但是INADDR_NONE取值4294967295(十进制)所以永远不会进入IF语句。 为什么要取那个值?以及如何使常数取适当的值?

谢谢大家。

PD:我正在使用 RAD Studio 10

问题出在 Winsock 中的声明之一。

S_addr 被声明为 u_long,但不幸的是,u_long 被定义为有符号 Longint 而不是无符号 Longword。所以你应该投:

if Result.S_addr = u_long(INADDR_NONE) then
begin
  ...
end;