Win7, D2101
Использую модуль JwaWinsock2
Нужно получить ip по названию.
Вот объявление:
function gethostbyname(name: PChar): PHostEnt
PChar в 2010 это PWideChar
Так вот, никак не мог понять почему функция не хочет работать, не возвращает ipшники по названию. Решил проблему с приведением тип WideString к AnsString и тогда всё заработало.
Вопрос так и должно быть?
Код моей функции:
procedure GetIPs(const aList: TStrings; const aHostName: string = '');
type
PPInAddr = ^TPInAddr;
TPInAddr = array [0..250] of PInAddr;
var
mHost: PHostEnt;
mHostName: AnsiString;
mAdress: PPInAddr;
mWSAData: TWSADATA;
i: Integer;
begin
if aList <> nil then
begin
WSAStartup(C_WSA_VERSION, mWSAData);
if Length(aHostName) > 0 then
begin
mHostName := aHostName;
mHost:= GetHostByName(PChar(mHostName));
end
else
begin
SetLength(mHostName, 128);
GetHostName(PChar(mHostName), Length(mHostName));
mHost:= GetHostByName(PChar(mHostName));
SetLength(mHostName, 0);
end;
if mHost <> nil then
begin
mAdress := PPInAddr(mHost^.h_addr_list);
i := 0;
while mAdress[i] <> nil do
begin
aList.Add(N2IP(mAdress[i]^));
Inc(i);
end
end;
WSACleanup;
end;
end;