Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2015, 12:19   #1
werovulv
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 27
Сообщение Проверка правильности ввода

Доброго времени всем, столкнулся с такой проблемой, необходимо проверить на правильность ввода e-mail, и если есть ошибка в мейле, то вывести ее. Нашёл на просторах нета что похожее, но он не выводит ошибку набора мейла:
Код:
function IsValidEmail(const Value: string): boolean; 
function CheckAllowed(const s: string): boolean; 
var 
i: integer; 
begin 
Result:= false; 
for i:= 1 to Length(s) do 
begin 
{ недопустимый символ в s - значит недопустимый адрес } 
if not (s[i] in ['a'..'z', 'A'..'Z', '0'..'9', '_', '-', '.']) then 
Exit; 
end; 
Result:= true; 
end; 
var 
i: integer; 
namePart, serverPart: string; 
begin // начало выполнения IsValidEmail 
Result:= false; 
i:= Pos('@', Value); 
if i = 0 then 
Exit; 
namePart:= Copy(Value, 1, i - 1); 
serverPart:= Copy(Value, i + 1, Length(Value)); 
// @ не указано имя имя или сервер не указаны; минимально для сервера. "a.com" 
if (Length(namePart) = 0) or ((Length(serverPart) < 5)) then 
Exit; 
i:= Pos('.', serverPart); 
// должно иметь точку и как минимум три знака от конца 
if (i = 0) or (i > (Length(serverPart) - 2)) then 
Exit; 
Result:= CheckAllowed(namePart) and CheckAllowed(serverPart); 
end;

Последний раз редактировалось werovulv; 19.10.2015 в 12:40.
werovulv вне форума Ответить с цитированием
Старый 19.10.2015, 19:53   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Подключить модуль RegExpr (или любой иной для регулярок) и взять регулярку для валидации мейла ту или иную (даже официальную из RFC) не вариант ? Или задача чисто учебная на разбор строки ?
P.S. код не читал (сформатируйте хотя бы отступами, можно взть инструмент DelForExp или встроенные в Дельфи начиная с версии хе2)
phomm вне форума Ответить с цитированием
Старый 19.10.2015, 21:07   #3
werovulv
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 27
По умолчанию

Это на работу, нее, туда если чтот подключать, то база вылетит, там костыль на костыле)) Поэтому нужно чтоб именно сообщением выводились недопустимые символы, которые ввели в мейле.
werovulv вне форума Ответить с цитированием
Старый 19.10.2015, 21:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А чего базе вылетать, если этот RegExpr на базу ни какого влияния не оказывает и используется в делфийской проге? А вариаций мейлов конь не валялся
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.10.2015, 01:58   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

емейл - это конструкция вида "login@domain"
надо чётко сформулировать принципы построения логина и домена и проверять их отдельно.
ну и таки да, регулярку можно применить, если понимаешь, как оно работает.
но, т.к. задача простейшая, я б свою функцию валидации нашкрябал за один перекур.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 20.10.2015, 09:17   #6
werovulv
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А чего базе вылетать, если этот RegExpr на базу ни какого влияния не оказывает и используется в делфийской проге? А вариаций мейлов конь не валялся
Это да, а вот смотрите, я делаю вывод не правильной буквы в мейле, правильно ли так? Мне в принципе только это и нужно сделать)
Код:
ShowMessage(IntToStr(s[i]));
werovulv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Postgre: проверка правильности ввода email Blondy SQL, базы данных 0 24.09.2011 01:02
Форматирование ввода в колонку dataGridView и проверка правильности ввода tumanovalex C# (си шарп) 1 31.05.2011 19:56
Проверка правильности ввода в форму ArtJuhn JavaScript, Ajax 2 18.11.2010 00:16
Проверка правильности ввода. Whiplash Паскаль, Turbo Pascal, PascalABC.NET 6 14.11.2008 18:00
Проверка правильности ввода символов LLIypLLIyH Помощь студентам 7 22.07.2008 19:30