Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2011
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Me pueden decir por que este codigo no me funciona?.
La parte donde valido si el caracter esta en un conjunto no se ejecuta, por que puede ser?

Código Delphi [-]
var
  vLetras_Up_Set: set of 'A'..'Z';
  vLetras_Low_Set: set of 'a'..'z';
  vNum_Set: set of '0'..'9';
  vActChar: Char;
  vX, vComplejidad: Integer;
  vLetraMinContada, vLetraMayuscContada, vNumeroContado, vSimboloContado: Boolean;
begin

  //si el caracter que se esta procesando no esta en ningunode estos conjuntos,
  //entonces debe ser un simbolo u otro caracter y se incrementa el contador.

  if edt_new_pass_show.Text = '' then
    Exit;

  edt_new_pass.Text := edt_new_pass_show.Text;
  vComplejidad := 0;
  vLetraMinContada := False;
  vLetraMayuscContada := False;
  vNumeroContado := False;
  vSimboloContado := False;
  
  //Aqui es donde se calcula todo
  for vX := 1 to Length(edt_new_pass_show.Text) do
    begin
      vActChar := edt_new_pass_show.Text[vX];

      //El caracter actual es una mayuscula
      if (vActChar in vLetras_Up_Set) and not vLetraMayuscContada then
        begin
          ShowMessage('Se conto una mayuscula');
          Inc(vComplejidad);
          vLetraMayuscContada := True;
        end
      else
      //El caracter actual es una minuscula
      if (vActChar in vLetras_Low_Set) and not vLetraMinContada then
        begin
          Inc(vComplejidad);
          vLetraMinContada := True;
        end
      else
      //El caracter actual es un numero
      if (vActChar in vNum_Set) and not vNumeroContado then
        begin
          Inc(vComplejidad);
          vNumeroContado := True;
        end  
      else
      //El caracter actual es un simbolo
      if not vSimboloContado then
        begin
          ShowMessage('Se conto un simbolo');
          Inc(vComplejidad);
          vSimboloContado := True;
        end;  
    end;


   //ShowMessage(IntToStr(vComplejidad));
  //Si la longitud es menor de 8 caracteres entonces no es segura para nada
  if Length(edt_new_pass_show.Text) < 8 then
    vComplejidad := 1
  else
    Inc(vComplejidad);

  case vComplejidad of
    1: lb_complejidad.Caption := 'Complejidad: Extremadamente insegura';
    2: lb_complejidad.Caption := 'Complejidad: Poco segura';
    3: lb_complejidad.Caption := 'Complejidad: Segura';
    4: lb_complejidad.Caption := 'Complejidad: Muy Segura';
    5: lb_complejidad.Caption := 'Complejidad: Extremadamente segura';
  end;

end;
Responder Con Cita
  #2  
Antiguo 05-05-2011
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 835
Poder: 24
gatosoft Va camino a la fama
Varias observaciones...

1) seria prudente encerrar cada condicion compuesta de los if en paréntesis...

Código Delphi [-]
  if (vActChar in vLetras_Up_Set) and not vLetraMayuscContada then

Código Delphi [-]
 if (vActChar in vLetras_Up_Set) and (not vLetraMayuscContada) then

Solo un capricho, pero la experiencia despues te dirá por que...

2) tienes un problema de logica con los if.. else if...

por ejemplo, si tienes un password como: "hola"

entonces... la primera vez evalua y encuentra una minuscula..
la segunda vez que pasa por el for, no entra a la minuscula, sino que va derecho al caracter... y en adelante no cuenta nada... total: una minuscula y un caracter para la palabra "hola".

dices que no llega a evaluar carcateres?? es poco probable, pues casi todo va a parar alla... hiciste un seguimiento paso a paso?? has revisado lo que almacenan los conjuntos... es decir, no es lo mismo si trabajas con delphi 7 a delphi 2010, pues en este útlimo hay cambios de char a ansichar... revisa este tema


3) Veo que si el password es menor de 8 caracteres automaticamente reseteas la coplejidad a uno... yo preferiria dar pesos a cada condicion, es decir:

1) que tenga mas de 8 caracteres: 30 puntos
2) que tenga una minuscula: 5 puntos
3) que tenga una mayuscula: 20 puntos
4) que tenga un carcater: 30 puntos.
5) que tenga un numero: 15 puntos

total 100 puntos... y evaluas la complejidad segun la puntuación... es casi lo mismo... pero...
Responder Con Cita
  #3  
Antiguo 05-05-2011
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 28
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por gatosoft Ver Mensaje
1) seria prudente encerrar cada condicion compuesta de los if en paréntesis...
No sólo es prudente sino que muchas veces es imprescindible, ya que la precedencia de los operadores lógicos está al mismo nivel que los aritméticos, no como en otros lenguajes como el C donde están en otro nivel.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Calcular formulas tocomi Varios 2 22-12-2008 22:06:20
¿Cuál sería la relación Modularidad/Complejidad que se estaría dispuesto a tolerar? Delphius Debates 35 16-02-2008 07:13:10
Programas que calculan la complejidad operacional Delphius Varios 5 19-01-2007 10:34:34
calcular duracion mp3 madriles Varios 5 10-08-2005 16:20:24
Calcular exponente [Gunman] Varios 0 18-04-2005 13:28:39


La franja horaria es GMT +2. Ahora son las 03:01:19.


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