Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.21;
Скачать: CL | DM;

Вниз

InterBase...   Найти похожие ветки 

 
$hade   (2002-01-24 15:46) [0]

Народ! Подскажите PLZ! Есть приложение работающее с Interbase...
перед подключением вводим пароль в свою форму...подключаемся...если пароль неправильный - снова показываем форму - снова воодим...и так пока не введем правильно или не нажмем отмену...
тока вот если первый раз ввели неправильно - на второй раз прога вылетает...Access Violation и так далее...
В чем косяк?
и как определить вообще какая ошибка была при подключении? (а то оно на все ругаеца просто - EInterbaseError или чтото подобное)...


 
Fareader   (2002-01-24 17:06) [1]

check:=false;

while not check do
try
database1.connected:=false;
database1.parambyname("user name").asstring:="ff";
database1.parambyname("password").asstring:="ff";
database1.connected:=true;
check:=true;
except
showmessage("пароль неверный!");
//Все остальное (вызов формы, очистка едитов и т.д.) - по вкусу
end;


 
$hade   (2002-01-24 17:12) [2]

ВОТ!!! ИМЕННО ТАК И НЕ РАБОТАЕТ!
то есть в except выводим сообщение...потом снова форму и проверяем пароль и...все...п...причем полный...
если с первого раза правильный парольввести - все нормально работает...


 
Иван Шихалев   (2002-01-24 17:27) [3]

Думаю, проблема где-то в уничтожении/создании формы.


 
Fareader   (2002-01-24 18:44) [4]

Выложи код в студию


 
$hade   (2002-01-25 15:14) [5]

хм...вот код... из файла проекта...
function Logon: word;
begin
Result := 0; // 0 - если все нормально...
if LoginForm.ShowModal = mrOK then
try
with MainForm, IBDataBase1 do
begin
DatabaseName := LoginForm.ComboBox2.Text;
Params.Clear;
Params.Add("USER_NAME=" + LoginForm.ComboBox1.Text);
Params.Add("password=" + LoginForm.Edit1.Text);
LoginPrompt := false;
Query1.Open; // при открытии запроса автоматом будет подключаться Database....
end;
except
on EIBInterBaseError do
begin
MessageDlg(" Bad Username or password. " + #10#13 + " Access Denied!", mtError, [mbOk], 0);
logon; // вот тут снова вызываем рекурсивно...))
end;
end
else
Result := 1;
end;

begin
Application.Initialize;
Application.Title := "**********";
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TLoginForm, LoginForm);
if Logon = 0 then
begin
Application.CreateForm(... );
...
Application.Run;
end
else
Application.Terminate;
end.


 
Fareader   (2002-01-25 17:06) [6]

Подожди а где еще раз

Application.CreateForm(TLoginForm, LoginForm);

????

Ты же второй раз форму не нарисовал, а функцию вызываешь.
лучше не так сделай.

Положи на LoginForm IBDataBase1 и обрабатывай коннект прямо на клике этой кнопки и пока не введут правильный пароль или не откажутся от своих притязаний - форму не закрывай.
На обаботчик


 
Desdechado   (2002-01-25 17:31) [7]

и что это за хитрый стиль - рекурсивно вызывать логон?!?!
тебе ж Fareader © (24.01.02 17:06) все показал - обычный цикл, никаких извратов. в нем и форму показывай, и обработку ошибки делай.



Страницы: 1 вся ветка

Текущий архив: 2002.02.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
14-66675
VID
2001-12-30 21:08
2002.02.21
Техника ломается!


3-66494
DeNNiss
2002-01-29 15:52
2002.02.21
уважаемые программисты!


3-66435
Alan
2002-01-27 12:22
2002.02.21
Добавление таблицы в базу MS SQL Server 7.0


3-66420
Besa
2002-01-25 17:11
2002.02.21
SQL по 2 БД?


3-66483
masik
2002-01-29 12:21
2002.02.21
MS SQL Types