Delphi 7. При введении некорректных данных прграмма не останавливалась, а выдала лишь сообщение об ошибке

программирование программы Delphi делфи

наверное нужно использовать оператор try- except. Например, есть едит1 - логин и маскедит1 - пароль, при нажатии на кнопку открывается новая форма, которая с помощью запроса где логин= едит1 и маскедит1=пароль изменяет Caption на соответствующую запись. Теперь проблема, при вводе логина и пароля которых нет в таблице, программа просто вылетает. А хотелось бы чтобы вывело сообщение об ошибке, закрыв которую можно было бы продолжить работу? Пробовала применить try- except, но у меня ничего не получается, перерыла интернет , подходящего кода не нашла... :( Помогите плиииз!

Примечание:
procedure TVhod.sButton1Click(Sender: TObject);
var a,b,c,d:string;
begin
Vhod.Hide;
lkSotrudnik.show;


//Вывод фамилии и имени сотрудника, чьи логин и пароль были введены
DM.Qsotrudniki.SQL.Clear;
DM.Qsotrudniki.SQL.Add('select * from Sotrudniki');
DM.Qsotrudniki.SQL.Add('where Login="'+sEdit1.Text+'" and Parol="'+sMaskEdit1.Text+'"');
DM.Qsotrudniki.Open;
a:=DM.Qsotrudniki.FieldValues['Familiya'];
b:=DM.Qsotrudniki.FieldValues['Imya'];
lkSotrudnik.Caption:=a+' '+b;
sEdit1.Clear;
sMaskEdit1.Clear;
end;
end.

Примечание:
try
begin
//все выше перечисленное
except
showmessage('Ошибка');

//Просто не знаю как правильно написать
Ответы:
Просто обработайте это условие вручную!
В смысле, собственным кодом.
пример кода вашего try - except покажите
Вообще-то 90% нормальной программы - это обработка ошибок пользователя
Так как вашего кода нет, то алгоритм простой:
При вводе Логина - спросить есть ли такой в таблице, если нет - сообщение об ошибке, если есть - то запомнить
При вводе Пароля то же самое.
Если обе проверки удачные, то сделать то что от них требуется.
Никаких специальных try-except не требуется
Можно так:
DM.Qsotrudniki.SQL.Clear;
DM.Qsotrudniki.SQL.Add('select * from Sotrudniki');
DM.Qsotrudniki.SQL.Add('where Login="'+sEdit1.Text+'" and Parol="'+sMaskEdit1.Text+'"');
try
 begin
   DM.Qsotrudniki.Open;
   a:=DM.Qsotrudniki.FieldValues['Familiya'];
   b:=DM.Qsotrudniki.FieldValues['Imya'];
   lkSotrudnik.Caption:=a+' '+b;
 end
except
   on E : Exception do
     begin
       ShowMessage('Cannot open, assign e.t.c.  '+E.Message,mtError,[mbOK],0);
       {do something ....}
     end;
end;


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.