Показать сообщение отдельно
  #1  
Старый 17.04.2012, 17:50
Аватар для Klassenas
Klassenas Klassenas вне форума
Новичок
 
Регистрация: 25.05.2009
Адрес: Казахстан, Павлодар
Сообщения: 87
Версия Delphi: Rad Studio 2010
Репутация: 1570
Вопрос Получить IP по имени компа

Нужно получить 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;
как сделать, чтобы первая функция тоже работала?
__________________
Если ты чего-то не знаешь, значит есть шанс научиться чему-то новому
Ответить с цитированием