Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Pregunto:
Tienes que trabajar obligatoriamente con Paradox? o lo puedes hacer con otra BD ?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #2  
Antiguo 30-07-2011
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Gracias Caral
Si tengo que usar Paradox y es correcto lo que decis. Se que algo esta mal, pero supuestamente con esas herramientas basicas lo deberia poder hacer, tiene que ser algo muy simple; crear una tabla con nombre y usuario, en Paradox y en Delphi un formulario en el cual ingresamos los datos y comparamos, si es correcto vamos al formulario2 y cerramos el primero.
Si esta mal, lo indicamos con un mensaje y a los 3 intentos erroneos, se cierra el programa.
Pense que iba a ser mas facil, pero hace una semana que ando dando vueltas con lo mismo
Responder Con Cita
  #3  
Antiguo 30-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Quieres que hagamos el procedimiento como creo que deberia de ser ?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 30-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Hola Compañero DOS!

Lo primero que debes hacer es declarar una variable en tu formulario. En esta variables almacenaras el número de intentos que ha hecho el usuario para iniciar sesión. Cuando esta variable llegue a 4, procedes a cerrar la aplicación. Puedes declarar la variable así:
Código Delphi [-]
type
    TForm1 = class(TForm)
    ...
    private
        Intentos: Integer; // la variable "Intentos" será para uso exclusivo del formulario
                           // por eso está en la sección "Private"
    ...
end;

Luego, en el botón para iniciar sesión, utiliza un código similar a este:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
    apellido, contrasena: String; // utiliza variables más descriptivas.
                                  // Es una buena practica de programación.
    ClaveCorrecta: Boolean;       // utilizada para indicar si el usuario
                                  // utilizó un usuario y contraseña correctos.
begin
    apellido := Edit1.Text;
    contrasena := Edit2.Text;
        
    edit1.Clear;
    edit2.Clear;
    edit1.SetFocus;
    
    while not Table1.Eof do // es lo mismo que "while table1.eof = false do"
    begin
        // comparar el usuario y contrasena
        if (Table1.FieldByName('apellido').AsString = apellido) and
           (Table1.FieldByName('clave').AsString = contrasena) then
        begin
            ClaveCorrecta := True;
            Form1.Hide;
            Form2.Show;
        end;
        
        // compararemos con el siguiente registro en la DB
        Next;
    end;
    
    // no se utilizó un usuario y contraseña correcta?
    if not ClaveCorrecta then
    begin
        ShowMessage('Clave Incorrecta');
        // aumentamos el número de intentos
        Inc(Intentos) // Inc(Intentos) = Intentos := Intentos + 1;
        
        // ya hizo los 4 intentos?
        if Intentos >= 4 then
        begin
            ShowMessage('Adios!');
            Application.Terminate; // cierra la aplicación
        end;
    end;
end;
Notarás que el código se hace un poco largo, pero es porque lleva notas explicativas. Además no es un código optimizado. Está basado en lo que tú ya has escrito. Aún así, espero que el código te sirva.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #5  
Antiguo 30-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Bien, para empezar:
1- recorrer la tabla no es correcto, imaginate que tengas muchos datos, esto hace que el programa sea lento.
2- hacer o crear variables donde no se necesitas es gastar recursos, el programa crece innecesariamente.
3- Leer tanto el nombre como la clave en un solo IF es un error, ya que no necesariamente el usuario estara mal o la clave.
Bueno, para mi algo sencillo es esto:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Filtro: String;
 Cuenta: integer;
 begin
 Table1.Filtered:= False;
 Filtro := 'Nombre = '+Edit1.Text;
 Table1.Filter := Filtro;
 if table1.FieldByName('Nombre').AsString = Edit1.Text then
 begin
 Cuenta := Cuenta + 1;
 Table1.Filtered:= False;
 Filtro := 'Clave = '+Edit2.Text;
 Table1.Filter := Filtro;
 if table1.fieldbyname('Clave').Asstring = Edit2.Text then
 begin
 Form2:=TForm2.Create(self);
 try
 Form1.Visible:= False;
 Form2.ShowModal;
 finally
 Form2.Free;
 end;
  end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           Edit1.Text := '';
           Edit1,SetFocus;
           If Cuenta = 3 then Close;
         end;
 end;
Como ves, se filtra solo el nombre, si es el correcto entonces se filtra la clave, no se pierde tiempo ni recursos.
Se inicia la cuenta desde la búsqueda del nombre.
Se crea el form 2, no se hace desde el principio, es una mala practica.
Simplemente se esconde el form 1, no hace falta nada mas.
Se elimina el form 2 cuando el programa termina.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 30-07-2011
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Gracias Chris
hice un copy paste en el programa y no corria, le hice unos pequeños cambios, segun la version anterior y asi corria, si pongo la clave bien, va al sig. form pero si es incorrecta sigue constantemente dando la opcion de cargar el U y la C pero nunca muestra el cartel ni termina la aplicacion.
Disculpen muchachos si soy molesto y les agradesco nuevamente por su prontas respuestas y ayuda. /aprendi a recuadrar la sintaxis

Código SQL [-]
var
    apellido, contrasena: String; // utiliza variables más descriptivas.
                                  // Es una buena practica de programación.
    ClaveCorrecta: Boolean;       // utilizada para indicar si el usuario
     Intentos: Integer;           // utilizó un usuario y contraseña correctos.
begin
    apellido := Edit1.Text;
    contrasena := Edit2.Text;
        
    edit1.Clear;
    edit2.Clear;
    table1.First;
    edit1.SetFocus;
    
    while table1.eof = false do
    begin
        // comparar el usuario y contrasena
        if (Table1.FieldByName('Apellido').AsString = apellido) and
           (Table1.FieldByName('Clave').AsString = contrasena) then
        begin
            ClaveCorrecta := True;
            Form1.Hide;
            Form2.Show;
        end;
        
        // compararemos con el siguiente registro en la DB
          table1.Next;
    end;    
    
    // no se utilizó un usuario y contraseña correcta?
    if not ClaveCorrecta then
    begin
        ShowMessage('Clave Incorrecta');
        // aumentamos el número de intentos
        Inc(Intentos); // Inc(Intentos) = Intentos := Intentos + 1;
        
        // ya hizo los 4 intentos?
        if Intentos >= 4 then
        begin
            ShowMessage('Adios!');
            Application.Terminate; // cierra la aplicación
        end;
    end;
end;

.
Responder Con Cita
  #7  
Antiguo 30-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Haciendo algunos cambios.
Copia y pega este codigo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Filtro: String; // filtra
 OK : Boolean;  // define
 begin
 Table1.Filtered:= False; // no filtra la tabla
 Filtro := 'Apellido = '+Edit1.Text; //define el filtro del nombre
 Table1.Filter := Filtro; // le da el filtro a la tabla
 if Table1.FieldByName('Apellido').AsString = Edit1.Text then // si el nombre es igual
 begin
 Table1.Filtered:= False; // cancela el filtro
 Filtro := 'Clave = '+Edit2.Text; // define el filtro para la clave
 Table1.Filter := Filtro; // le da el filtro a la tabla
 end
 else  // si nombre no es correcto
 Begin
 Cuenta := Cuenta + 1;  // aumenta la cuenta en 1
 MessageDlg('Usuario No encontrado',mtError, [mbOK], 0); // envia un mensaje
 Edit1.Text := '';  // limpia el edit1
 Edit1.SetFocus;    // da el foco al edit1
 OK := False; // indica que no se definio
 If Cuenta = 3 then close; // si el nombre no coincide 3 veces se cierra
 end;

 if Table1.fieldbyname('Clave').Asstring = Edit2.Text then // si la clave es igual
 begin
 if OK = True then // define que es verdadero
 begin
 Form2:=TForm2.Create(self); // crea el form 2
 try
 Form1.Visible:= False; // esconde el form 1
 Form2.ShowModal; // muestra el form 2
 finally
 Form2.Free; // libera el form 2
 Application.Terminate; // termina el programa
 end;
 end;
 end
 else  // si la clave no es correcta
 Begin
 OK:= False; // lo define falso
 Cuenta := Cuenta + 1; // aumenta la cuenta
 MessageDlg('Clave Inválida',mtError, [mbOK], 0); // envia un mensaje
 Edit2.Text := ''; // limpia el edit2
 Edit2.SetFocus;   // le da el foco al edit 2
 If Cuenta = 3 then close;  // si la cuenta es igual a 3 cierra el programa
 end;
end;
Ya esta probado, si tienes alguna duda el codigo tiene cada una de las explicaciones, cambia lo que necesites, asi practicas.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 30-07-2011 a las 22:28:12.
Responder Con Cita
  #8  
Antiguo 30-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Utiliza este código. Inicializaré la variable ClaveCorrecta para ver si es eso lo que te está dando problemas
Código Delphi [-]
var
    apellido, contrasena: String; // utiliza variables más descriptivas.
                                  // Es una buena practica de programación.
    ClaveCorrecta: Boolean;       // utilizada para indicar si el usuario
     Intentos: Integer;           // utilizó un usuario y contraseña correctos.
begin
    apellido := Edit1.Text;
    contrasena := Edit2.Text;
    ClaveCorrecta := False;    
    edit1.Clear;
    edit2.Clear;
    table1.First;
    edit1.SetFocus;
    
    while table1.eof = false do
    begin
        // comparar el usuario y contrasena
        if (Table1.FieldByName('Apellido').AsString = apellido) and
           (Table1.FieldByName('Clave').AsString = contrasena) then
        begin
            ClaveCorrecta := True;
            Form1.Hide;
            Form2.Show;
        end;
        
        // compararemos con el siguiente registro en la DB
          table1.Next;
    end;    
    
    // no se utilizó un usuario y contraseña correcta?
    if not ClaveCorrecta then
    begin
        ShowMessage('Clave Incorrecta');
        // aumentamos el número de intentos
        Inc(Intentos); // Inc(Intentos) = Intentos := Intentos + 1;
        
        // ya hizo los 4 intentos?
        if Intentos >= 4 then
        begin
            ShowMessage('Adios!');
            Application.Terminate; // cierra la aplicación
        end;
    end;
end;

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #9  
Antiguo 30-07-2011
DOS DOS is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 173
Poder: 16
DOS Va por buen camino
Muchas gracias, ya lo voy a probar, si bien hay varios comandos que todavia no conosco, vamos a ver que pasa. Despues les cuento. ; )
Responder Con Cita
  #10  
Antiguo 31-07-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
Caral Va por buen camino
Hola
Bueno, no se si al amigo DOS le funciona, pero a mi definitivamente no me funciona el codigo del amigo Chris, evidentemente no lo reviso, eso pasa.
Aqui te dejo el codigo que hice (presiona el boton Caral) y el codigo de Chris (presiona el boton Chris), asi entenderas mejor el concepto y la diferencia.
Esto esta hecho con BD access, pero es lo mismo, para que funcione en tu programa simplemente cambia donde veas ADOTABLE1 por Table1 y listo, copia y pega.
Saludos
PD: pruebalo con estos:
usuario ( caral )
clave ( car )
Puedes equivocarte tanto en la clave como en el usuario.
__________________
Siempre Novato

Última edición por Caral fecha: 31-07-2011 a las 20:25:15.
Responder Con Cita
Respuesta



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
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta sobre App MDI MaMu OOP 4 15-07-2007 21:30:15
Consejo sobre uso de contraseña. alfredosg19 Varios 2 08-03-2005 14:22:43
consulta sobre .ini bytecero Varios 2 02-02-2005 21:01:09


La franja horaria es GMT +2. Ahora son las 09:51:05.


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