![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
myendlessness |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
Предположим есть TextBox, в который вводится определённый адрес, в данном случае ftp, например: ftp.mail.ru! В программе человек будет самостоятельно вводить адрес фтп-сервера, как сделать так чтобы была проверка на правильность введения, чтобы не было невнимательных ошибок и опечаток, что-то вроде: ftp2.mail.ru, ftp.mailru, ftpmail.ru, ftp.mail.ru.ru и прочих изобретательностей. Речь идёт о любом фтп-сервере. Как сделать такую защиту минимальными усилиями? Спасибо за помощь!
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
В обработчиках событий Validating и Validated.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Heinzz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 12.12.2008 Где: .net Репутация: 5 Всего: 9 |
разбить текст через Split используя разделитель '.' и проверить два условия:
* первая строка =="ftp" * строк 3 шт * опционально - длина последней строки 2 символа |
|||
|
||||
SKrivosein |
|
|||
![]() Идущий в даль ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
Более-мение стандартное решение как написал diadiavova наставить CausesValidation TextBox-са на true которая
спустит событие Validating при уходе фокуса. Можно ещё добавить ErrorProvider который покажет пользователю чего плохо ![]()
Да regex возможно в этом случае : ^((ftp)\.[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3})$ Это сообщение отредактировал(а) SKrivosein - 16.7.2009, 01:23 |
|||
|
||||
myendlessness |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
Ребята всем СПАСИБО за помощь
![]() ), что означают символы? Где можно почитать? И ещё один момент, дело в том, что адрес сервера может состоять из разного количества слов, например: ftp.mail.ru, ftp.mail.tut.by и тд. Может стоит в цикле проверять каждое слово? или что-нибудь в этом духе, пока перевариваю и думаю как лучше и корректно сделать?! |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Вообще-то проверить корректность адреса, а так же определить отдельные его параметры можно при помощи класса System.Uri
Добавлено через 3 минуты и 29 секунд А на счёт символов читай здесь http://msdn.microsoft.com/ru-ru/library/sy...ions.regex.aspx И далее по ссылкам в конце топика(другие ресурсы) -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
SKrivosein |
|
|||
![]() Идущий в даль ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
Регулярные выражения беру как общий случай, допустим в техт бокс будеш вводить телефоны, е-майлы и т.д.
На книгу лови ссылку:Рег.выражения Всегда пригодится. P.S. полное выражение про URL: ^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$ Это сообщение отредактировал(а) SKrivosein - 16.7.2009, 13:58 |
|||
|
||||
myendlessness |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
diadiavova спасибо за более оптимизированный подход, вот только дойду до 100 сообщений и сразу займусь Вашей репутацией
![]()
|
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Функция работает, надо смотреть другой код.
А в приведённом примере, как мне кажется, 10-строку надо тоже в блок if вставить. Объяснялку то в случае ошибки выводить надо. Или я чего-то не понял? Присоединённый файл ( Кол-во скачиваний: 2 ) ![]() -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
myendlessness |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
2 SKrivosein
Спасибо за книгу и помощь ![]() |
|||
|
||||
SKrivosein |
|
|||
![]() Идущий в даль ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
А я если пишу ftp://mail.ru или например ftp://mail.test.ru то всё работает, а ftp.mail.ru нет.
Поэтому я свой первый регех написал так: ^((ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3})$ а потом исправил на: ^((ftp)\.[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3})$ и тот первый правильный, а второй... ![]() diadiavova if не надо, этот код f.SetError((Control)sender, error); выполнится всегда, но стаботает только если error !=null Это сообщение отредактировал(а) SKrivosein - 16.7.2009, 15:20 |
|||
|
||||
myendlessness |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
diadiavova Вы правильно заметили, что в строчке 10 нужен ещё if, просто у меня это пока пробная версия, тренериюсь и стараюсь понять как всё работает
понял почему у меня не срабатывало я пишу: ftp.mail.ru Вы пишите: ftp://mail.ru разница была в том, что нужно полностью (со слешем и двоеточием) писать адрес ВСЕМ СПАСИБО! You are ![]() Хотел спросить, как сделать так, чтобы если открылось окно, то нельзя было переходить на другие окна? Добавлено через 9 минут и 24 секунды 2 SKrivosein Вы меня чуть-чуть опередили ![]() Значит всё-таки в строчке 10 не надо if! |
|||
|
||||
SKrivosein |
|
|||
![]() Идущий в даль ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
Form.ShowDialog(); ?
в 10 стрике ничего ненадо, смотреть выше. |
|||
|
||||
myendlessness |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 8.8.2008 Репутация: нет Всего: нет |
Тут возникает один вопрос, какой из двух способов Regex или IsCorrectFtpAddress будет обеспечивать лучшую защиту?
|
|||
|
||||
SKrivosein |
|
|||
![]() Идущий в даль ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 9.6.2007 Где: Praha - Прага Репутация: 4 Всего: 8 |
Всмысле лучшую? Если напишеш правильно рег.выражение то номоему всёравно. Регулярные выражения более универсальны, допустим тебе банк скажет что необходимо проверить вот такого вида ввод: 1234-7746043/asd-0300, здесь нечего стандартного найти нельзя надо самому писать выражение. А IsCorrectFtpAddress это встроеный в .NET метод он 99,99% правильный и голову ламать не надо, но надо знать что он есть
![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |