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 这里过不去了!
请问一下,我错在那了?
解决方案 »
- 求数组中整数的头数和、尾数和问题
- 求 一个登录界面代码
- 请问一下.delphi有没有vc的new和delete问题?
- Error:Access violation at address xxxxxxxx. Read of address xxxxxxxx
- [请教]在DELPHI中怎样控制网页中下拉列表的选择...
- quickreport的输出问题
- 请问一个函数指针的问题
- QDBTEXT所读来的数值,我怎么才能定义每个字符的宽度?
- 急 !!问题!!!
- 如何在DELPHI中实现一大段文字一行一行地向上滚动。。。115分
- xml BULK LOAD 到数据库中
- 这边有熟悉Winapi并且喜欢偏技术探索方向的没?
改
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;