Foros Club Delphi

Foros Club Delphi (http://www.clubdelphi.com/foros/index.php)
-   Varios (http://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comprobar contraseña (http://www.clubdelphi.com/foros/showthread.php?t=92610)

The Cid James 08-12-2017 07:57:00

Comprobar contraseña
 
Tengo el siguiente codigo, la idea como el soft solo maneja una sola contraseña para la configuracion es solamente comprobar la contraseña para ello hice esto

Código Delphi [-]
procedure Tflogin.BloginClick(Sender: TObject);
var
contraseña2: string;
begin
  fmodulo.qcontraseña.Active:= true;
  if trim(ELcont.Text) = ''
   then
    ShowMessage('Por favor intruzca la contraseña de administracion')
   else
    contraseña2 := CalcHash2 (ELcont.Text, haMD5);
    fmodulo.qcontraseña.Open;
      if contraseña2 = fModulo.qcontraseña['pass'] 
        then
          showMessage('hola') //jamas entra aqui
      else
        //ShowMessage('chau');
        Edit1.Text := contraseña2; // use esto para verificar si el hash coincide
end;

Por mas que el hash sea el mismo siempre me manda el else

aposi 09-12-2017 15:59:47

Código Delphi [-]
if contraseña2 = fModulo.qcontraseña['pass'].value

jhonny 09-12-2017 16:58:50

Si de pronto no es lo que señala aposi. Se me ocurre que quizá CalcHash2 esté devolviendo un espacio... quizá hay que aplicar Trim ahí. Si puedes poner el código de CalcHash2 a lo mejor podríamos probar el tema.

The Cid James 10-12-2017 00:25:02

Cita:

Empezado por aposi (Mensaje 523256)
Código Delphi [-]if contraseña2 = fModulo.qcontraseña['pass'].value

No me deja usar esto, error "invalid variant operarto"

Cita:

Empezado por jhonny (Mensaje 523258)
Si de pronto no es lo que señala aposi. Se me ocurre que quizá CalcHash2 esté devolviendo un espacio... quizá hay que aplicar Trim ahí. Si puedes poner el código de CalcHash2 a lo mejor podríamos probar el tema.

Por lo visto si me esta devolviendo el valor nulo, probe con
Código Delphi [-]
      else
        //ShowMessage('chau');
        Edit1.Text := fModulo.qcontraseña['pass'];
Y efectivamente salio que era nulo, la consulta en teoria no deberia serlo

Y el codigo de calhast2 esta en este post y funciona perfectamente lo use para guardar la contraseña anteriormente Hash md5

The Cid James 10-12-2017 02:41:42

Lo solucione de la siguente forma para que encontrara el valor de "pass"

Código Delphi [-]
procedure Tflogin.BloginClick(Sender: TObject);
var
contraseña2, contraseña3: string;
begin
fmodulo.qcontraseña.Active:= true;
  if trim(ELcont.Text) = ''
    then
      ShowMessage('Por favor intruzca la contraseña de administracion')
   else
    contraseña2 := CalcHash2 (ELcont.Text, haMD5);
    if  fmodulo.qcontraseña.Locate('pass', contraseña2, [])
      then
        begin
          Self.Close;
          fmodulo.qempresa.Active := true;
          fmodulo.qempresa.Edit;
          fconfiguracion := Tfconfiguracion.Create(self);
          fconfiguracion.Parent := fPrincipal.TPprincipal;
          fconfiguracion.ManualDock(fPrincipal.TPprincipal);
          fconfiguracion.Align := alClient;
          fconfiguracion.Show;
          fmodulo.qcontraseña.Active := false;
        end
    else
      ShowMessage('Contraseña incorrecta por favor intentelo de nuevo');
      fmodulo.qcontraseña.Active := false;
end;

AgustinOrtu 10-12-2017 20:59:04

Volviendo al codigo original, los tiros van por aca:

Cita:

Empezado por aposi (Mensaje 523256)
Código Delphi [-]
if contraseña2 = fModulo.qcontraseña['pass'].value

No tengo Delphi a mano para probar, pero fModulo.qcontraseña['pass'].value esto devuelve un Variant, y contraseña2 es un string. Y como no tengo a mano para probar, no recuerdo si se pueden comparar directamente strings y Variants.

Lo que si se puede hacer es convertir el valor del campo a string, quedando asi:

Código Delphi [-]
if contraseña2 = fModulo.qcontraseña['pass'].AsString

Ahora si es posible comparar los dos strings

El Locate lo que hace es posicionar el DataSet en el primer registro que cumple la condición, y devuelve True si encontró 1, o False en caso contrario


La franja horaria es GMT +2. Ahora son las 22:58:54.

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