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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 15:33   #11
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

А, не, ну понятно, что WSAStartup() надо делать, это вобще на автомате должно быть )
Кстати да, если возвращает nil, печатай код ошибки, сильно помогает.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 15:37   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
это вобще на автомате должно быть )
Ну да, на автомате )))
Люблю коробку-автомат, за то что у нее все на автомате )))))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2011, 15:37   #13
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
По крайней мере тот пример по ссылке у меня работает норм (и я даже знаю почему)
А почему бы ему и не работать? И, как я уже говорил, айпишнегов может быть несколько (у меня их 3, например), а код по твоей ссылке возвращает только первый попавшийся.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 15:44   #14
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
В коде там, и узнаешь код ошибки. (У меня например 10093 вылезла)
у меня кстати тож 10093 ошибка по ссылке код это помойму узнаёт локальный а мне нужен другой
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 17.01.2011, 15:49   #15
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

10093 - забыли вызвать WSAStartup(), всё просто.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 15:57   #16
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
10093 - забыли вызвать WSAStartup(), всё просто.
ээээээээ это как? можете в существующий код вставить или что и куда ей нужно передовать
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 17.01.2011, 16:02   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А по ссылке пройти не судьба?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2011, 16:04   #18
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
var
  wsaData: TWSAData;
  ar, arr: ^LongWord;
begin
  if (0 = WSAStartup($101, wsaData)) then begin
    //
    p := gethostbyname(PAnsiChar(AnsiString('')));
    if (p = nil) then
      writeln('WSA error: ' + IntToStr(WSAGetLastError()))
    else begin
      //
      ar := pointer(p.h_addr_list);
      while (0 <> ar^) do begin
	//
	arr := pointer(ar^);
	writeln(string(inet_ntoa(in_addr(arr^))));
	//
	inc(ar);
      end;
    end;
  end;
end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 17:32   #19
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Вау... как раз пару дней назад писал функцию на основе этого кода. У меня получилось вот так (работает)
Код:
function GetKlientIp(ShowLocalIp: Boolean): string;
var p: PHostEnt; ar, arr: ^LongWord; aresult: integer; SL: TStringList;
begin
  SL := TStringList.Create;
  p := gethostbyname(PAnsiChar(AnsiString('')));
  if (p = nil) then
    aresult := WSAGetLastError()
  else
  begin
    ar := pointer(p.h_addr_list);
    while (0 <> ar^) do
    begin
      arr := pointer(ar^);
      if (ShowLocalIp) then SL.Add(string(inet_ntoa(in_addr(arr^)))) else
        if (Copy(string(inet_ntoa(in_addr(arr^))), 1, 8) <> '192.168.') then
          SL.Add(string(inet_ntoa(in_addr(arr^))));
      inc(ar);
    end;
  end;
  Result := SL.text;
  SL.Free;
end;
ShowLocalIp - показывать или нет локальную сеть.
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.01.2011, 17:54   #20
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

не 192.168. единым...

Цитата:
The Internet Assigned Numbers Authority (IANA) has reserved the
following three blocks of the IP address space for private internets:

10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
узнать путь nuevegramodelamor Помощь студентам 12 13.09.2009 21:44
Узнать mac + ip BARNEY Работа с сетью в Delphi 6 21.07.2009 14:09
узнать ip hacknet Работа с сетью в Delphi 14 18.01.2009 11:55
Узнать IP Черничный Работа с сетью в Delphi 5 11.08.2008 20:36
Узнать о клике Dj_smart Работа с сетью в Delphi 0 13.05.2008 21:10