Когда я вхожу в систему в своем приложении с правильным именем пользователя и паролем, вначале я получаю сообщение об ошибке для неправильного имени пользователя или пароля, а затем в следующий раз, когда я нажму кнопку входа в систему, логин работает отлично. Я любитель delphi, Не судите меня.Ошибка входа в Delphi XE
type
TfmLogin = class(TForm)
pnlMain: TPanel;
lblUserName: TLabel;
SQLConnection: TSQLConnection;
DataSource: TDataSource;
ClientDataSet: TClientDataSet;
SQLQuery: TSQLQuery;
DataSetProvider: TDataSetProvider;
edtUserName: TEdit;
lblPassword: TLabel;
edtPassword: TEdit;
btnRegistration: TButton;
btnLogin: TButton;
SQLTable: TSQLTable;
procedure btnRegistrationClick(Sender: TObject);
procedure btnLoginClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmLogin: TfmLogin;
implementation
Это функция матч
function MatchPass(Table : TSQLTable; const UserName, Password : string): Boolean;
begin
Result := Table.Locate('Username;Password', VarArrayOf([username,password]),[]);
end;
И это процедура кнопка Войти
procedure TfmLogin.btnLoginClick(Sender: TObject);
var
UserName : string;
Password : string;
begin
UserName := edtUserName.Text;
Password := edtPassword.Text;
if(MatchPass(SQLTable, UserName, Password)) then //1.Why first time returns false
begin
with TfmMain.Create(nil) do
try
ShowModal; //3.And opens my main form
finally
free;
end;
end
else
ShowMessage('Wrong name or pass'); //2.And enters else and the second time returns true
end;
Довольно маловероятно, что мы сможем объяснить это с такой небольшой информацией. Разумеется, объяснение подробно объясняется тем, что мы не можем видеть. –
Мы не можем отлаживать это для вас, потому что, как говорит @DavidHeffernan, проблема должна заключаться в том, что мы не можем видеть. Я предлагаю вам временно добавить значения UserName и Password, которые были отклонены для вашего вызова ShowMessage. Также вы на 100% уверены, что SqlTable открыт, когда вы его сначала назовете? – MartynA
Спасибо, ребята, это в значительной степени мой модуль входа, кроме кнопки регистрации. Работа с регистрационной формой прекрасна и правильно вставляет поля в базу данных (поле идентификатора автоповтора, имя пользователя и пароль). @MartynA SQLTable проверяется активным из инспектора объектов, нигде в модуле входа не используются методы SQLTable.Open или Close. –