La clase User:
delphi
type TUser = class UserName: String[30]; Password: String[30]; NameOfUser: String[50]; UserGroup: Integer; GroupName: String[30]; Permisos: Array of String; PermisosCount: Integer; constructor Create; function Login(User,Pass: String; DataBase: TIBDatabase): boolean; End; implementation constructor TUser.Create; begin UserName := ''; Password := ''; NameOfUser := ''; UserGroup := 0; GroupName := ''; Permisos := nil; PermisosCount := 0; end; function TUser.Login(User: string; Pass: string; DataBase: TIBDatabase): boolean; var Query: TIBQuery; begin Query := TIBQuery.Create(Application); Query.Database := DataBase; Query.Close; Query.SQL.Text := 'SELECT * FROM USERS WHERE USUARIO = ' + User + ' AND CLAVE = ' + Pass; try Query.Open; except raise Exception.Create('No se pudo conectar a la Base de datos ó abrir la tabla. ' + #13 + #13 + 'Consulte con el administrador del sistema.'); end; if Query.RecordCount > 0 then result := True else result := False; Query.Free; end;
Como verán la función Login sirve para loguearse, la uso de esta forma:
delphi
procedure TFLogin.btnEntrarClick(Sender: TObject); begin Usuario := TUser.Create; if not Usuario.Login(edUser.Text, edClave.Text, Datos.IBData) then begin ShowMessage('Usuario no existe!.' + #13 + 'Por favor escriba correctamente e intente de nuevo.'); Abort; end else begin Close; end; end;
Al ejecutar el procedimiento me muestra el siguiente error:
delphi
--------------------------- Debugger Exception Notification --------------------------- Project ControlNotas.exe raised exception class $C0000005 with message 'access violation at 0x00596de2: read of address 0x00000060'. --------------------------- Break Continue Help ---------------------------
Se coloca en la línea:
delphi
if not Usuario.Login(edUser.Text, edClave.Text, Datos.IBData) then begin
Pues aquí me he estancado.
Saludos.