Форум: "Начинающим";
Текущий архив: 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