Авторизация пользователя через созданную форму в Delphi
Модератор: kdv
Авторизация пользователя через созданную форму в Delphi
Всем привет! У меня вопрос следующего содержания:
Хочу подключаться к базе InterBase через свою созданную форму авторизации! При не правильном вводе пользователя сообщается ошибка, о том что спросите своего админа БД о пароле или имени пользователя! Псоле этого приложуха выкидывается! Хочется сделать так чтобы просто выкидывалось свое диалоговое окно о том что введен не правильный пароль или логин! Так каким компонентом пользоваться? пробовал такую штуку
try
base.connected:=true;
except
........
end;
все равно не помогает! Помогите плиз, люди добрые!
Хочу подключаться к базе InterBase через свою созданную форму авторизации! При не правильном вводе пользователя сообщается ошибка, о том что спросите своего админа БД о пароле или имени пользователя! Псоле этого приложуха выкидывается! Хочется сделать так чтобы просто выкидывалось свое диалоговое окно о том что введен не правильный пароль или логин! Так каким компонентом пользоваться? пробовал такую штуку
try
base.connected:=true;
except
........
end;
все равно не помогает! Помогите плиз, люди добрые!
минимум лет десять на массе дельфевых сайтов есть туча подобных примеров. Плюс, подозреваю, этот вопрос описан в любой книжке по дельфям, в которой описано программирование работы с БД.все равно не помогает! Помогите плиз, люди добрые!
хрен его знает. а какими Вы пользуетесь?Так каким компонентом пользоваться?
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
тоже столкнулся с такой проблемой. использую ibx. покопавшись в исходниках, понял, что для проверки соединения нужно использовать ibapi. ну и прежде чем собственно соединение осуществить, нужно довольно много кода написать. в fbplus есть errorhandler, собстна через него можно что-то сделать. но должно же быть решение проще))
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
Вот код:
Код: Выделить всё
form1.base.Params.Clear;
form1.base.LoginPrompt:=False;
form1.base.DatabaseName:='server:e:\path\xxx.ib';
form1.base.Params.Add('user_name='+Edit1.text);
form1.base.Params.Add('password='+Edit2.text);
form1.base.Params.Add('SQLRole=zakaz');
form1.base.Params.Add('lc_ctype=none');
k:=1;
try
form1.base.connected:=true; //- {вот эта строка происходит всегда даже если пользователя или пароль указали неверно, в этом случае вываливается ошибка которая просто ставит в даун приложение}
except begin
messagedlg('Не правильный ввод пароля',mtInformation, [mbYes],0);
k:=0;
end;
end;
Студенты активизировались, что ли?
Какой хендлер? Какой API? Просто пытаешься подключиться, этого достаточно для проверки возможности подключения.
"lc_ctype=none" это из каких соображений?
"Весь интернет перерыл" - враньё. Оба, марш вот эту статью читать.
Какой хендлер? Какой API? Просто пытаешься подключиться, этого достаточно для проверки возможности подключения.
"lc_ctype=none" это из каких соображений?
"Весь интернет перерыл" - враньё. Оба, марш вот эту статью читать.
И что при простом подключении не выдает ошибку если ползователь введен неверно? - проверь! Я уже сутки сижу..статью которую ты дал - уже читал - ничего там про это не написанно - это исключении при конекте! "lc_ctype=none" - это из соображений что связываемся с 1с! а она выгружать из себя может тока в такой кодировки!
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
читали тыщу раз статью. просто проблема наверное неправильно выражена.
у меня при эксепшене приложение выдает сначала 'не законнектились', потом интербейзовское сообщение. чот ваще непонятно =\
Код: Выделить всё
try
Database.Connected := True;
Result := True;
except
ShowMessage('не законнектились');
Result := False;
end;
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
1C вообще не умеет "из себя выгружать" в IB/FB ни в каком виде. Потому эту фразу я не понял.Toshiba писал(а):"lc_ctype=none" - это из соображений что связываемся с 1с! а она выгружать из себя может тока в такой кодировки!
И наоборот, загружать в IB/FB базу не обязательно в той кодировке, в которой получил данные (если, конечно, не юникод с разными "раскладками" одновременно).
Вероятно, дальше по коду ты что-то пытаешься сделать с этим несостоявшимся соединением.RedAndBlack писал(а):сначала 'не законнектились', потом интербейзовское сообщение
Что за ошибка-то?
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
далее ничего не делается, датамодуль, где находится база, уничтожается. ошибка та же, что и у Toshiba.WildSery писал(а):Вероятно, дальше по коду ты что-то пытаешься сделать с этим несостоявшимся соединением.RedAndBlack писал(а):сначала 'не законнектились', потом интербейзовское сообщение
Что за ошибка-то?
А зафига он уничтожается, если ты пользователю еще попытку дать хочешь?RedAndBlack писал(а):далее ничего не делается, датамодуль, где находится база, уничтожается. ошибка та же, что и у Toshiba.
и что, при успехе тоже без датамодуля работать?
ошибку IB можно вообще-то перехватить и вывести сообщение на великом и могучем.
Код: Выделить всё
try
logfm:=Tlogfm.Create(application);
logfm.Showmodal;
//и делай ты в этой форме что хочешь, хоть фишечки, хоть рюшечки
//проверяй правильность пароля, выставляй счетчик ошибок, ну что хошь, в общем, пока не скажешь там, что logfm.Modalresult:=......
finally
logfm.release;
end;
Последний раз редактировалось stix-s 28 мар 2008, 13:28, всего редактировалось 1 раз.
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
это тест был) по поводу второго раза появления диалога - тож мой косяк, не уследил в одном месте =)А зафига он уничтожается, если ты пользователю еще попытку дать хочешь? Smile
вобщем у меня всё нормально, ошибку отрабатывает нормально и приложение не вылетает. так что, Toshiba, чот странно у тебя. если трейсить, то тоже вылетает на той же строке??
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
Toshiba писал(а): КАК???????
Код: Выделить всё
try
database.connected := True;
except
messagedlg('чот не хотит коннектится, видать логин/пассвард не тот :(', mtError, [mbOk], 0);
end;