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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2011, 11:07   #1
Holzz
 
Регистрация: 15.07.2011
Сообщений: 3
По умолчанию проверить правильность E-mail адресса

посоны, нужно проверить правильность введенного мыла в Edit1.
нашел функцию, но не понимаю как ее использовать.
помогите позязя.
Holzz вне форума Ответить с цитированием
Старый 02.08.2011, 11:12   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Интересно, что за функция? Как то подымал подобную тему на форуме http://programmersforum.ru/showthread.php?t=157011 Кончилось тем, что написал свой небольшой тест
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.08.2011, 11:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а я бы рекомендовал подключить библиотечку RegExp (маленькая, бесплатная, full sources) и воспользоваться регулярным выражением (регэксп для проверки email входит, если не ошибаюсь, даже в демонстрашку данной библиотеки).
Просто, быстро, надёжно...

p.s. ну, разумеется, проверяется только соответствие адреса формальным параметрам.
Наличие такого адреса НЕ ПРОВЕРЯЕТСЯ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.08.2011, 11:33   #4
Holzz
 
Регистрация: 15.07.2011
Сообщений: 3
По умолчанию

Код:
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));//не указано имя или сервер
  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;
как ее использовать?
IsValidEmail(Edit1.Text)?
ошибка.
Holzz вне форума Ответить с цитированием
Старый 02.08.2011, 11:43   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вызвать то просто: if not IsValidEmail(Edit1.Text) then <адрес не верный>. Но функция очень простенькая, например не отловит подряд идущие точки, или сервер i.ua посчитает ошибкой
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.08.2011, 12:01   #6
Holzz
 
Регистрация: 15.07.2011
Сообщений: 3
По умолчанию

спасибочки. :*
еще вопрос.
как остановить дальнейшее выполнение программы?
например если я ввел неверное мыло, программа должна написать "ошибка" и вернуться к вводу мыла. %)
например :

Код:
if not (IsValidEmail(Edit3.Text)) or (IsValidEmail(Edit6.Text)) then
MessageDlg('Обшибка ввода мыла',mtError,[mbOk],0);
нашел функцию halt, но она полностью закрывает программу. =(
з.ы я дельфи второй день изучаю, простите за глупые вопросы. =D
Holzz вне форума Ответить с цитированием
Старый 02.08.2011, 12:08   #7
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Код:
Exit;
Т.е.:
Код:
if not (IsValidEmail(Edit3.Text)) or (IsValidEmail(Edit6.Text)) then
begin
MessageDlg('Обшибка ввода мыла',mtError,[mbOk],0);
Exit;
end;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить правильность решения(ассемблер) Нина93 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 26.12.2010 17:42
Проверить на правильность задачу sam5213 Паскаль, Turbo Pascal, PascalABC.NET 0 23.12.2010 18:28
TObjectList. Проверить правильность использования Roof Общие вопросы Delphi 0 05.07.2010 17:04
Как проверить дескриптор (указатель) на правильность? TwiX Общие вопросы Delphi 11 13.02.2010 22:10
Нужно проверить на правильность программу Killdgedan Помощь студентам 3 26.05.2009 00:45