Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

[Lazarus] Существует ли функция "является ли строка IPv4-адресом" [Win32, другое]


Вайрекс   (25.10.17 23:23

Имеется ввиду нет ли явных опечаток. Надо покачто для десятичного представления. Например "0.0.7000.0" или "8.8.8.8.8.8" - явно не является IP-адресом.
Интересует именно существует ли в Lazarus своя готовая кроссплатформенная функция. Навелосипедить-то я могу, но хочется по возможности использовать библиотечное. =))

З.Ы. На всякий случай, по теме: http://www.delphimaster.net/view/2-1317733017
     Лазарус правда ругается на код с inet_addr+gethostbyname, и что ему не нравится я чёт не понял...


han_malign ©   (26.10.17 12:23[1]


> существует ли в Lazarus своя готовая кроссплатформенная функция

- существует - но она однозначно кривая(наивный парсер через pos('.'), copy и val(int))
так что разбирайся - и что ему не нравится в inet_addr


rrrrrr ©   (26.10.17 19:52[2]

Надо покачто для десятичного представления

ну допустим, что она есть.

ты счастлив, но теперь тебе нужны еще две функции
одна должна сказать, что адрес ниже указан в восмеричной нотации,
и проверять его нужно в третьей функции которая "более другая" чем первая, которая допустим уже есть.

http://0255.0302.0334.0136


rrrrrr ©   (26.10.17 20:05[3]

даже допустим что их есть три и даже тридцать три.

что в итоге?
в итоге два разных варианта,
но одинаковые своей беспомощностью

try
inet_addr+gethostbyname
exception
showmessage('вронг аддресс! бат ай кан нот тел ю ватс там вронг');
end

if address_nod_valid(myaddress) then
showmessage('аддрессиз стил вронг! анд ай стил каннот телью энисинг что там вронг');


Вайрекс   (27.10.17 00:32[4]

Спасибо!

> так что разбирайся - и что ему не нравится в inet_addr

Да я просто читал ту ветку, читал, дай думаю скопипастю кусок кода, запущу, гляну что да как.
Не компилит. Просто удивился сему.


> существует - но она ...

эм... Дак а название-то еёное можна услышать?))

> ... но теперь тебе нужны еще две функции ...

эм..... Не-а. Не нужны. %)
Специфика задачи. Должно быть в десятичной в 99% случаев.
Вероятность что когда-либо понадобится в другой - крайне мелкая.


rrrrrrr ©   (27.10.17 08:38[5]

дело не в вероятностях.

а дело в том, что функция эта ничего тебе не даст сверх того, что у тебя и так уже есть.


han_malign ©   (10.11.17 16:26[6]


> http://0255.0302.0334.0136

http://173.0302.0334.0x5E

\lazarus\fpc\3.0.2\source\packages\rtl-extra\src\inc\sockets.inc
function StrToHostAddr(IP : AnsiString) : in_addr ;

Var
   Dummy : AnsiString;
   I,j,k     : Longint;
   Temp : in_addr;

begin
 strtohostaddr.s_addr:=0;              //:=NoAddress;
 For I:=1 to 4 do
   begin
     If I<4 Then
       begin
         J:=Pos('.',IP);
         If J=0 then
           exit;
         Dummy:=Copy(IP,1,J-1);
         Delete (IP,1,J);
       end
      else
        Dummy:=IP;
     Val (Dummy,k,J);
     array4int(temp.s_addr)[i]:=k;
     If J<>0 then Exit;
  end;
  strtohostaddr.s_addr:=ntohl(Temp.s_addr);
end;

- но для нее http://100500.-17.&334.%1010101
- будет вполне правильным...


han_malign ©   (10.11.17 16:37[7]

но самое забавное, что StrToHostAddr('0255.0302.0334.0136') - приведёт совершенно в другое место...


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо