Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Ответ
 
Опции темы
Старый 14.01.2020, 15:30   #1
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 130
По умолчанию Не верно работает код

Добрый день, коллеги, подскажите , такая ситуация, сделал форму логин пароль, но если в окне не верно ввести код, то программа все равно запускается:
Код:
procedure login() ;
var
pas,mysql:string;
begin
 Form2:= TForm2.Create(Application);
       if Form2.ShowModal = mrOk then begin
       Form2.ADOQuery1.Active := false;
       Form2.ADOQuery1.SQL.Clear;
       mysql:= 'SELECT pass FROM users WHERE login='''+ Form2.ComboBox1.Text+'''';
       Form2.ADOQuery1.SQL.Add(mysql);
       Form2.ADOQuery1.Active := True;

             pas:= Form2.ADOQuery1.Fields[0].AsString;
             if pas<>Form2.Edit1.Text then
                 begin
                 Showmessage('Неверный пароль');
                 zapysk:=0;
                 Form2.Show;
                 Form2.Edit1.SetFocus;
                 Form1.Hide;

                 end;
       end
        else
begin
 Application.Terminate; // Закрытие программы.
end
 end;



procedure TForm1.FormCreate(Sender: TObject);
begin
 login();
end;
Подскажите, как правильно прерывание кода сделать после неудачной попытки, перезапуск приложения?
MixanMM вне форума Ответить с цитированием
Старый 14.01.2020, 17:14   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 4,962
По умолчанию

Цитата:
Код:
                 Form1.Hide;
это "главная форма" приложения?
ее управляете(Show/Hide) не только вы(написанный ВАМИ код) но и само приложение(внутренний код Application).
и его код (Application) выполнится после вашего Login();
а там Show; и ...

1.проверять и "прятать" после показа приложением
использовать другое событие OnCreate --> OnShow
Код:
function Login: boolean;
begin // и забыть здесь о существовании Form1. (не использовать эту переменную в этой функции
...
                 Form1.Hide;
...
end;
Код:
procedure TForm1.FormShow(Sender: TObject);
begin
 if not login() then begin
   self.Hide; // программы "не видно", НО она существует и может даже работать.
   self.Close; //закроет форму и программу тоже
 end;
end;
Цитата:
перезапуск приложения?
или повторный показ формы запроса пароля?
Код:
result:=false;
repeat
  if form2.showModal<>mrok then break;
  result:=( pass =form2.Edit1.Text);
  if result then break;
until ... // и сколько раз будем показывать(повторять) при неудачных попытках ?
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.01.2020 в 17:21.
evg_m вне форума Ответить с цитированием
Старый 15.01.2020, 08:26   #3
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 130
По умолчанию

Спасибо, всё работает

Последний раз редактировалось MixanMM; 15.01.2020 в 16:34.
MixanMM вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Без функции всё работает верно, с ними не верно,помогите исправить bylbyl9tor Помощь студентам 0 06.04.2019 19:20
Программа написано верно, но почему-то не работает (на Си) Дмитрий Огнев Помощь студентам 7 29.04.2014 20:19
strpos работает не верно с булевым значением SwitchOFF PHP 2 08.07.2011 14:31
функция сортировки массива работает не верно DroZd911 Помощь студентам 1 18.02.2011 06:33
fgets - работает не верно, и вообще тупит heart C++ Builder 14 29.11.2009 16:55