Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.08;
Скачать: CL | DM;

Вниз

Есть ли в Delphi функция проверки IP-адреса на валидность?   Найти похожие ветки 

 
Rouse_ ©   (2011-10-04 19:54) [40]

Зы: кстати по поводу разделения результата и возвращаемого значения, я сам так периодически делаю, но давно пришел к выводу что это есть не правильный подход и сейчас себя приучаю не писать функции вида:
function Foo(out/var OutputValue): Boolean
ибо гораздо правильней делать
function Foo: OutputValue
убирается избыточность, а проверку лучше по самому возращенному значению делать...


 
Rouse_ ©   (2011-10-04 19:55) [41]

т.е. в твоем случае это будет полный аналог inet_addr с результатом INADDR_NONE в случае ошибки.
(ну это так - в качестве брюзжания :)


 
Омлет ©   (2011-10-04 20:01) [42]

> Rouse_ ©   (04.10.11 19:55) [41]

А разве адрес 0.0.0.0 невалидный?


 
Rouse_ ©   (2011-10-04 20:06) [43]

INADDR_NONE это не 0.0.0.0, это аналог броадкаст адреса, т.е. INADDR_BROADCAST
Такие случаи оговариваются в спецификации и в случае, если мы явно знаем что нужен броадкаст, идет проверка именно на него.


 
Омлет ©   (2011-10-04 20:11) [44]

> Rouse_ ©   (04.10.11 20:06) [43]

Я к тому, что по результату функции

function StrToIP(const s: string): dword;

никак не понять, валидный адрес или нет. Поэтому приходится вводить out-параметр.


 
Rouse_ ©   (2011-10-04 20:17) [45]

Почему? Понять... возвращай INADDR_NONE в случае ошибки.
Единственно конфликт будет с адресом 255.255.255.255, но это будет уже ошибка программиста, который зная о существовании константы INADDR_BROADCAST не воспользовался ей и попробовал произвести конвертацию IP адреса через функцию.


 
Омлет ©   (2011-10-04 20:32) [46]

> Rouse_ ©   (04.10.11 20:17) [45]

Вот именно, что будет конфликт. Пользователь ввел адрес 255.255.255.255, а нам надо проверить валидность..
Мы смотрим - INADDR_NONE, ага, невалидный - пользователь в недоумении )


 
Anatoly Podgoretsky ©   (2011-10-04 20:43) [47]


> Rouse_ ©   (04.10.11 19:55) [41]

Так почему бы не использовать именно inet_addr


 
Rouse_ ©   (2011-10-04 20:59) [48]


> Омлет ©   (04.10.11 20:32) [46]
>
> > Rouse_ ©   (04.10.11 20:17) [45]
>
> Вот именно, что будет конфликт.

Не будет, нет-же ни у кого из разработчиков сетевого транспорта проблем с inet_addr :)


> Anatoly Podgoretsky ©   (04.10.11 20:43) [47]
> Так почему бы не использовать именно inet_addr

Дык я его изначально и предлагал в 22-ом посте :)


 
Anatoly Podgoretsky ©   (2011-10-04 21:15) [49]

> Rouse_  (04.10.2011 20:59:48)  [48]

Так ты предложил в форме ссылке, а я ее не смотрел.


 
Rouse_ ©   (2011-10-04 21:18) [50]

Ну в 23-ем тоже его предложил :)


 
DVM ©   (2011-10-04 22:20) [51]


> Омлет ©   (04.10.11 19:51) [39]

теперь ждем для IPv6 :)



Страницы: 1 2 вся ветка

Текущий архив: 2012.01.08;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.011 c
2-1317586239
alexdn
2011-10-03 00:10
2012.01.08
Тхт файл..


2-1317233178
Очень злой
2011-09-28 22:06
2012.01.08
Можно ли сравнивать типизированные указатели разных типов?


15-1316925282
РВА
2011-09-25 08:34
2012.01.08
Подскажите по железу


2-1317554526
lesstab
2011-10-02 15:22
2012.01.08
DBGrid.SelectedRows.ПередайВонТомуГриду


3-1269608174
mefodiy
2010-03-26 15:56
2012.01.08
MySQL запрос