PDA

Ver la Versión Completa : loggin


pharaonhx
03-06-2005, 06:39:18
rocedure TPasswordDlg.BtnEntrarClick(Sender: TObject);
var
Nombre, Password: String;
I: Integer;
begin
Nombre := 'Flaco';
Password := 'Flaco20999';
I:=1;

repeat
if (EdNombre.Text = Nombre) and (EdPassword.Text = Password) then
begin
frmPrincipal.ShowModal;
end
else
begin
EdNombre.Clear;
EdPassword.Clear;
EdNombre.SetFocus;
BtnEntrar.Enabled := False;
end;//fin del if
I:=I + 1;
until I > 4;
Close;
end;
tengo este procedimiento en el click de un boton estoy tratando de crear un loggin lo que quiero que haga el programa de loggin es que luego de tres intentos por entrar fallidos el programa se cierre y no se donde me falla la loggica si alguien me puede ayudar se lo agradesere

_fede
03-06-2005, 11:05:10
Hola.

Basándome en la estructura de tu código y la solución que propones para implementar la pantalla de password.

procedure TPasswordDlg.BtnEntrarClick(Sender: TObject);
var
Nombre, Password: String;
begin
Nombre := 'Flaco';
Password := 'Flaco20999';

if (EdNombre.Text = Nombre) and (EdPassword.Text = Password) then
frmPrincipal.ShowModal
else
begin
EdNombre.Clear;
EdPassword.Clear;
EdNombre.SetFocus;
BtnEntrar.Enabled := False;

// Usamos, por ejemplo, la propiedad Tag del formulario que INICIALIZAMOS a
// cero para almacenar el número de intentos.
PasswordDlg.Tag := PasswordDlg.Tag + 1;

// Tres intentos erroneos.
if PasswordDlg.Tag = 3 then
ShowMessage('Tres intentos erroneos.');
end;

Close;

end;

Un saludo.

paufra
03-06-2005, 11:18:07
Yo haria una pequeña modificación a tu código:
// Tres intentos erroneos.
if PasswordDlg.Tag = 3 then
ShowMessage('Tres intentos erroneos.');
Close; //<< Añadido
end;

//Close; << Eliminar

Se supone que se debe cerrar cuando lleve tres intentos, por eso el close debe ir dentro del if, sino se cierra al primer fallo y saca el mensage al 3º (que no saldria nunca)