Delphi 2010 在编译GetHostByname时不能编译,但DELPHI 7.0可以!高手帮我一下
-----------------------------------------------------------------------------
uses WinSock;
function ResolveIP(HostName: string): string;
type
tAddr = array[0..100] of PInAddr;
pAddr = ^tAddr;
var
I: Integer;
WSA: TWSAData;
PHE: PHostEnt;
P: pAddr;
begin
Result := ''; WSAStartUp($101, WSA);
try
PHE := GetHostByName(pChar(HostName));
if (PHE <> nil) then
begin
P := pAddr(PHE^.h_addr_list);
I := 0;
while (P^[I] <> nil) do
begin
Result := (inet_nToa(P^[I]^));
Inc(I);
end;
end;
except
end;
WSACleanUp;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text :=ResolveIP('www.163.com');
end;---------------------------------------------
以上在DELPHI 7.0下面正常,但DELPHI 2010 在gethostbyname 这里过不去了!
请问一下,我错在那了?
-----------------------------------------------------------------------------
uses WinSock;
function ResolveIP(HostName: string): string;
type
tAddr = array[0..100] of PInAddr;
pAddr = ^tAddr;
var
I: Integer;
WSA: TWSAData;
PHE: PHostEnt;
P: pAddr;
begin
Result := ''; WSAStartUp($101, WSA);
try
PHE := GetHostByName(pChar(HostName));
if (PHE <> nil) then
begin
P := pAddr(PHE^.h_addr_list);
I := 0;
while (P^[I] <> nil) do
begin
Result := (inet_nToa(P^[I]^));
Inc(I);
end;
end;
except
end;
WSACleanUp;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text :=ResolveIP('www.163.com');
end;---------------------------------------------
以上在DELPHI 7.0下面正常,但DELPHI 2010 在gethostbyname 这里过不去了!
请问一下,我错在那了?
改
PHE := GetHostByName(PAnsiChar(HostName)); 在Delphi2010中PChar其实是PWideChar,宽字符指针,而在D7中则是PAnsiChar。而GetHostByName的参数是PAnsiChar。
function ResolveIP(HostName: AnsiString): AnsiString;
type
tAddr = array[0..100] of PInAddr;
pAddr = ^tAddr;
var
I: Integer;
WSA: TWSAData;
PHE: PHostEnt;
P: pAddr;
begin
Result := ''; WSAStartUp($101, WSA);
try
PHE := GetHostByName(PAnsiChar(HostName));
if (PHE <> nil) then
begin
P := pAddr(PHE^.h_addr_list);
I := 0;
while (P^[I] <> nil) do
begin
Result := (inet_nToa(P^[I]^));
Inc(I);
end;
end;
except
end;
WSACleanUp;
end;