Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];

Вниз

Есть ли в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.004 c
15-1315398270
Empleado
2011-09-07 16:24
2012.01.08
Конец OLE DB


15-1316162516
И. Павел
2011-09-16 12:41
2012.01.08
Переезд в Санкт-Петербург


15-1316636981
Юрий
2011-09-22 00:29
2012.01.08
С днем рождения ! 22 сентября 2011 четверг


15-1316692399
Очень Злой
2011-09-22 15:53
2012.01.08
помогите найти заразу


15-1316809802
Юрий
2011-09-24 00:30
2012.01.08
С днем рождения ! 24 сентября 2011 суббота





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский