Форум: "Базы";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c