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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2012, 20:42   #1
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию Получить IP адрес домена

Всем привет.

Есть функция для получения ip адреса домена

Код:
function HostToIP(name: string; var Ip: string): Boolean;
var
  wsdata : TWSAData;
  hostName : array [0..255] of char;
  hostEnt : PHostEnt;
  addr : PChar;
begin
  WSAStartup ($0101, wsdata);
  try
    gethostname (hostName, sizeof (hostName));
    StrPCopy(hostName, name);
    hostEnt := gethostbyname (hostName);
    if Assigned (hostEnt) then
      if Assigned (hostEnt^.h_addr_list) then begin
        addr := hostEnt^.h_addr_list^;
        if Assigned (addr) then begin
          IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
          byte (addr [1]), byte (addr [2]), byte (addr [3])]);
          Result := True;
        end
        else
          Result := False;
      end
      else
        Result := False
    else begin
      Result := False;
    end;
  finally
    WSACleanup;
  end
end;
В D7 работает отлично, но в D2010 не могу заставить работать.
Выдаёт
[DCC Error] Unit1.pas(206): E2010 Incompatible types: 'Array' and 'PAnsiChar'
[DCC Error] Unit1.pas(208): E2010 Incompatible types: 'Array' and 'PAnsiChar'
[DCC Error] Unit1.pas(211): E2010 Incompatible types: 'AnsiChar' and 'Char'

Помогите пожалуйста.
zver777 вне форума Ответить с цитированием
Старый 31.08.2012, 22:44   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
В D7 работает отлично, но в D2010 не могу заставить работать.
Потому что теперь Char != AnsiChar, Char != Byte
p51x вне форума Ответить с цитированием
Старый 31.08.2012, 22:48   #3
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Потому что теперь Char != AnsiChar, Char != Byte
Я знаю, что тут с типами что-то не то, но понятия не имею как исправить.
zver777 вне форума Ответить с цитированием
Старый 31.08.2012, 23:53   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ну как минимум заменить Char -> AnsiChar, PChar -> PAnsiChar
p51x вне форума Ответить с цитированием
Старый 01.09.2012, 13:04   #5
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию

p51x спасибо.
Рабочий в D2010 вариант

Код:
function HostToIP(name: string; var Ip: string): Boolean;
var
  wsdata : TWSAData;
  hostName : array [0..255] of AnsiChar;
  hostEnt : PHostEnt;
  addr : PAnsiChar;
begin
  WSAStartup ($0101, wsdata);
  try
    gethostname (hostName, sizeof (hostName));
    StrPCopy(hostName, name);
    hostEnt := gethostbyname (hostName);
    if Assigned (hostEnt) then
      if Assigned (hostEnt^.h_addr_list) then begin
        addr := hostEnt^.h_addr_list^;
        if Assigned (addr) then begin
          IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
          byte (addr [1]), byte (addr [2]), byte (addr [3])]);
          Result := True;
        end
        else
          Result := False;
      end
      else
        Result := False
    else begin
      Result := False;
    end;
  finally
    WSACleanup;
  end
end;
zver777 вне форума Ответить с цитированием
Старый 04.09.2012, 22:00   #6
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
p адреса домена
У домена нет ip-адреса.
ip-адрес есть у хоста с неким доменным именем, о чем, кстати, говорит хотя бы название содранной тобой откуда-то ф-ции - HostToIP()
xoodoo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить адрес функции в классе coNsept Общие вопросы C/C++ 3 02.03.2011 02:43
Из DNS-домена , IP адрес Dominatorsha Паскаль, Turbo Pascal, PascalABC.NET 2 30.01.2011 18:52
Получить ip-адрес по почте. D.O.G Общие вопросы Delphi 4 13.12.2010 12:13
Как получить IP-адрес сайта? badgo Общие вопросы .NET 2 19.01.2010 05:42
Получить адрес метода Altera Общие вопросы Delphi 2 02.10.2009 13:43