Нужно получить IP по имени компа.
Нашёл в Delphi World процедуру:
Код:
uses
WinSock;
const
WINSOCK_VERSION = $0101;
function GetIPAddress(name: string): string;
var
WSAData: TWSAData;
p: PHostEnt;
begin
WSAStartup(WINSOCK_VERSION, WSAData);
p := GetHostByName(PChar(name));
Result := inet_ntoa(PInAddr(p.h_addr_list^)^);
WSACleanup;
end;
Выдаёт ошибку, Access Violation, потому что функция GetHostByName не возвращает данные о хосте.
А вот в этой функции всё работает нормально:
Код:
function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] of Char;
begin
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then
begin
if GetHostName(@Buf, 128) = 0 then
begin
P := GetHostByName(@Buf);
if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
как сделать, чтобы первая функция тоже работала?