Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Usuarios Y Contraseñas (https://www.clubdelphi.com/foros/showthread.php?t=37210)

ivanflores 07-11-2006 01:31:03

Usuarios Y Contraseñas
 
Hola a todos de nuevo.
quisiera ver si me pueden hechar una mano con mi problema.

Estoy realizando un programa para usarlo en mi trabajo... y quiero ponerle una ventana para accesar al sistema pidiendo nombre de usuario y contraseña debidamente almacenados en una base de datos en paradox, los campos que utilizo son usuario(campo clave) y password. Quiero lograr que al presionar el boton de aceptar valide los campos y si son iguales me deje accesar al sistema, en caso de que en tres intentos no se logre accesar se termina la aplicacion. Si los campos son erroneos(cualquiera de los dos) me indique un mensaje de "usuario o password incorrectos."
lo he intentado de la siguiente manera pero no me funciona como yo quiero.

Código Delphi [-]
unit Users;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes,
  Graphics, Controls, Forms, Dialogs, StdCtrls;

type
  TUsuarios = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
end;

var
  Usuarios: TUsuarios;
  X:INTEGER;
  Y:INTEGER;

implementation

uses AdminUsCo;

{$R *.dfm}

procedure TUsuarios.Button1Click(Sender: TObject);
begin
  IF admiuc.Table1.findkey([edit1.Text])and(x<=3) then
  begin
    if admiuc.Table2.findkey([edit2.Text])AND(y<=3) then
    begin
      close;
    end
  end
  else
  begin
    x:=x+1;
    y:=y+1;
    edit1.Clear;
    edit2.clear;
    edit1.setfocus;
    messagedlg('USUARIO O CONTRASEÑA INCORRECTOS.'+#13+#10+ 'INTENTE DE NUEVO.',
     MTERROR, [MBOK],0)
  END;
  IF(X=3) THEN
  BEGIN
    MESSAGEDLG('NO SE PUEDE ACCESAR A SICSSA,
     "INTENTOS AGOTADOS".'+#13+#10+'!!PARA INTENTAR DE NUEVO VUELVA A EJECUTAR LA APLICACION.¡¡',MTINFORMATION,
      [MBOK],0);
    APPLICATION.TERMINATE;
  END;
end;

procedure TUsuarios.Button2Click(Sender: TObject);
begin
  APPLICATION.TERMINATE;
end;

end.

Hasta ahorita lo de los intentos si funciona pero al poner cualquier caracter en los edit ya no trabaja el mensaje de "usuario o contraseña incorrectos", si le pongo el usuario correcto y la contraseña incorrecta. no manda mensaje si le pongo el puro usuario correcto y el edit 2 en blanco si entra.
les agradeceria si pudieran hecharme una mano y decirme como lo puedo hacer o un codigo para esto.
de antemano muchas gracias.

JULIOCTORRESG 05-12-2006 16:35:54

esta es una opcion que utilizo
 
veo mucho codigo ...yo lo simplifico asi

el codigo para verificar los valores de las cajas de texto contra los almacenados en la tabla :

Código Delphi [-]
 if BaseDeDatos.TablaUsuarios.Locate('Usuario;Password',VarArrayOf([txtusuario.Text,TxtPassword.Text]),[]) then
          
// si esto es correcto ...coinciden los valores se ejecuta esto :
 
begin
            showmessage('Bienvenido '+BaseDeDatos.TablaUsuariosNombreUsuario.value);
            frmPrincipal.show;
end
 
//en caso contrario .....
else
begin
          ShowMessage('Error de Acceso');
 
       //incrementamos una variable GLOBAL previamente  declarada       e  
      //inicializada     ejemplo VarIntentos de tipo Integer
      
         inc(Intentos);
    
      // luego preguntamos por el numero de intentos realizados y si son 3     
     //cerramos la aplicacion........
        
if intentos < 3 then 
begin
          txtpassword.Text:='';
          TxtUsuario.SelectAll;
          txtusuario.SetFocus;
end
else aplication.terminate;
 
end;

ojo en mis aplicaciones si bien limito el acceso con este codigo no lo limito por numero de intentos ....el codigo que use se me ocurre en este momento pero creo que debe funcionar bien .....
avisas los resultados a ver que tal te va .....


La franja horaria es GMT +2. Ahora son las 16:50:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi