Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 22:09   #1
Djanius
Пользователь
 
Аватар для Djanius
 
Регистрация: 24.01.2009
Сообщений: 16
Вопрос Проблемы с GetHostByName

Нужна помощь. Есть функция которая показывает IP адрес по имени хоста. Работала она отлично, но в delphi 2010 не хочет, так как GetHostByName больше не работает с PChar, только с PAnsiChar, но при этом выдает неправильный результат. Подскажите пожалуйста, что можно с этим сделать? Заранее премного благодарен.

function getIPFromHost(const HostName: string): string;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
i: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := '';
phe := GetHostByName(PChar(HostName));
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
i := 0;
while pPtr^[i] <> nil do
begin
Result := inet_ntoa(pptr^[i]^);
Inc(i);
end;
WSACleanup;
end;
Djanius вне форума Ответить с цитированием
Старый 27.12.2010, 22:54   #2
Djanius
Пользователь
 
Аватар для Djanius
 
Регистрация: 24.01.2009
Сообщений: 16
По умолчанию

Все, в ответе не нуждаюсь, разобрался сам. Кому будет интересно и на будущее, вдруг кому нить пригодиться. Изменить тип константы в объявлении функции со String на PAnsiChar. А в GetHostByName убрать PChar.

function getIPFromHost(const HostName: PAnsiChar): string;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var

...

phe := GetHostByName(HostName);

...

end;
WSACleanup;
end;
Djanius вне форума Ответить с цитированием
Старый 28.12.2010, 00:55   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Код:
function getIPFromHost(const HostName: AnsiString): string;

...

phe := GetHostByName(PAnsiChar(HostName));

...
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с С# PDV199003 Помощь студентам 0 04.06.2010 14:38
проблемы с if Vergil Общие вопросы C/C++ 8 21.04.2010 21:43
Проблемы с монИтором. ROD Компьютерное железо 9 25.11.2009 09:26
Проблемы с рендомизацией си dampirik Помощь студентам 6 05.09.2009 01:15
проблемы с IE xakzona Помощь студентам 1 16.12.2008 21:53