Necesito ayuda con CLIPPER.

JEFFREY T -  
 faycal -
Hola a todos,

¡Tengo problemas con CLIPPER!

¡Debo crear un programa de gestión de contraseñas para acceder a otro programa!

¿CÓMO PUEDO HACERLO?

¡AYÚDENME POR FAVOR, ES MUY IMPORTANTE PARA MI AÑO ESCOLAR! Gracias de antemano a todos.

4 respuestas

  1. Bernard.Mouille
     
    Hola,

    Prueba un poco esto (cambiando los caracteres)

    * Contraseña.PRG - Contraseña.
    * ----------------------------
    *
    * Este es el programa en el que debo ingresar con una contraseña.
    *
    @ 10,10 DICE "Ingrese su contraseña: " && Para indicar dónde colocar la visualización de la función MOT.
    *
    ContraseñaOk="dupont" && Buena contraseña que puede venir de un archivo.
    *
    SI Contraseña(ContraseñaOk) && Si el retorno es correcto.
    @ 20,10 DICE "La contraseña es correcta, bienvenido."
    ELSE
    @ 20,10 DICE "¡Contraseña incorrecta! Acceso denegado"
    ESPERAR "Presione una tecla para salir"
    RETORNAR
    FIN SI
    *
    ESPERAR "Presione una tecla para continuar este programa"
    *
    * Programa a ejecutar.
    *
    RETORNAR && O SALIR.
    *
    * --------------------------------------------------------------
    *
    FUNC MOT(Contraseña)
    *
    * MOT = Cadena de caracteres de la contraseña a ingresar.
    *
    LOCAL E:=GUARDARRENDIMIENTO(0,0,FILA_MAX(),COLUMNA_MAX()), ; && Guardar pantalla.
    R:= .F. , ; && Retorno contraseña incorrecta
    V:="" , ; && Cadena que se construye con las pulsaciones del teclado.
    C:=0 && Valor del carácter pulsado en el teclado.
    *
    CLEAR TYPE && Vaciar el búfer del teclado para evitar errores.
    *
    HACER MIENTRAS C<>13 && Salida con <RETURN>.
    C=INKEY()
    SI (C>47 .Y. C<91) .O. (C>96 .Y. C<123) && Lista de caracteres aceptados.
    V=V+CHR(C) && La cadena se construye.
    @ FILA(), COLUMNA() DICE "X"
    C=0
    FIN SI
    FIN MIENTRAS
    SI V==Contraseña && Si es la contraseña correcta.
    R=.T. && Es cierto.
    FIN SI
    RETORNAR R

    Buen desarrollo
    0
    1. JEFFREY T Mensajes publicados 1 Estado Miembro
       
      Bernard Mouille,

      ¿Siempre de vacaciones o me has olvidado?

      LoL

      Realmente necesito tus linternas


      JEFFREY T
      0
      1. Bernard.Mouille > JEFFREY T Mensajes publicados 1 Estado Miembro
         
        Hola Jeffrey,


        No, no te he olvidado pero tengo mucho trabajo en este momento.

        Mira un poco, he hecho algunas modificaciones a tu programa, pero no tengo tiempo para profundizar:

        http://bernard.mouille.free.fr/jeffrey/mpassw.txt

        Como te dije el otro día, presta atención a tus bucles para salir "EXIT" o volver al principio del bucle "LOOP".


        Buen desarrollo


        Bernard
        0
  2. JEFFREY T
     
    Bernard,

    Necesitaría una ayuda; por favor, ¡es siempre IGUAL DE IMPORTANTE!!!!!!

    usar pass
    índice en pass a ind_pass

    establecer wrap en

    establecer color a ("w/b","w/r")

    establecer mensaje a 24 centrado

    público fin
    test=0

    v_nom=espacio(15)
    v_statut=espacio(10)
    v_pass=espacio(10)
    v_id=0
    v_rep=espacio(1)

    PÚBLICO opciones[2]
    opciones[1]="SÍ"
    opciones[2]="NO"

    PÚBLICO statuts[3]
    statut[1]="ADMINISTRADOR"
    statut[2]=" EMPLEADO "
    statut[3]=" JEFE "

    PÚBLICO super[5]
    super[1]="Agregar"
    super[2]="Paquete"
    super[3]="Recordar "
    super[4]="Modificar "
    super[5]="Eliminar "

    test=0

    HACER MIENTRAS .T.

    ir arriba
    blanco()
    localizar por (id=1)

    si (id <> 1)
    limpiar
    alerta("No hay ADMINISTRADOR")
    derecho={.T.,.F.,.F.}
    resu=achoice(9,15,9,27,statut,derecho)

    @07,5 decir "Nombre: " obtener v_nom
    @09,5 decir "Estatuto: "
    @11,5 decir "Contraseña: " obtener v_pass
    @13,5 decir "¿Guardar?: " obtener v_rep PICTURE "Y"
    resu1=1
    leer

    si v_rep = "Y"
    agregar blanco
    reemplazar nom con v_nom
    reemplazar stat con statut[resu]
    reemplazar pass con v_pass
    reemplazar id con resu
    alerta("Ficha creada")
    fin=.F.

    sino

    alerta("Ficha no guardada")
    blanco()
    fin=.F.
    fin si
    sino
    end si

    blanco()
    limpiar
    @1,5 decir "**********************************"
    @2,5 decir "** GESTIÓN DE CONTRASEÑAS **"
    @3,5 decir "**********************************"

    @5,5 decir "Nombre: " obtener v_nom PICTURE "@A"
    @7,5 decir "Contraseña: " obtener v_pass PICTURE "@A"
    leer

    buscar(v_nom)
    si encontrado()
    si v_pass = pass
    si id=1
    limpiar
    menú a test
    test=1
    fin=.F.
    sino
    limpiar
    menú a test
    test=2
    fin=.F.
    blanco()
    fin si
    sino
    limpiar
    alerta("Contraseña incorrecta")
    fin=.F.
    blanco()
    fin si
    sino
    alerta(v_nom+", no existe en nuestra base")
    fin=.F.
    blanco()
    end si

    hacer mientras .T.

    HACER CASO
    Caso test = 1
    pantalla()
    menú a principal

    HACER CASO

    caso principal = 1

    derecho={.T.,.T.,.T.,.T.}
    resu=achoice(2,3,10,15,super,derecho)
    fin=.T.

    hacer mientras fin

    si resu = 1
    pantalla()
    blanco()
    derecho={.T.,.T.,.T.}
    resu1=achoice(9,18,9,30,statut,derecho)

    @07,5 decir "Nombre: " obtener v_nom
    @09,5 decir "Estatuto: "
    @11,5 decir "Contraseña: " obtener v_pass
    @13,5 decir "¿Guardar?: " obtener v_rep PICTURE "Y"
    leer

    si v_rep = "Y"
    agregar blanco
    reemplazar nom con v_nom
    reemplazar stat con statut[resu1]
    reemplazar pass con v_pass
    reemplazar id con resu1
    alerta("Ficha creada")
    fin=.F.

    sino

    alerta("Ficha no guardada")
    blanco()
    fin=.F.
    fin si

    elseif resu=2
    pantalla()
    paquete
    alerta("Fichas eliminadas definitivamente!")
    fin = .F.

    elseif resu=3
    pantalla()
    recordar
    alerta("Fichas restauradas")
    fin = .F.

    elseif resu=4
    fin=.T.
    hacer mientras fin
    pantalla()
    blanco()
    @07,5 decir "Nombre: " obtener v_nom
    leer

    buscar (v_nom)

    si encontrado()
    @07,5 decir "Nombre: " obtener v_nom
    @09,5 decir "Estatuto: " obtener stat
    @11,5 decir "Contraseña: " obtener v_pass
    @13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
    leer

    si v_rep="Y"
    reemplazar nom con v_nom
    reemplazar stat con statut[resu1]
    reemplazar pass con v_pass
    reemplazar id con resu1
    pantalla()
    alerta("Ficha modificada")
    fin=.F.
    sino
    pantalla()
    alerta("Ficha no modificada")
    fin=.F.
    fin si
    fin=.F.

    sino
    alerta(v_nom+", no existe en nuestra base")
    pantalla()
    fin=.F.
    fin si

    fin hacer

    sino
    fin=.T.
    hacer mientras fin
    pantalla()
    blanco()
    @07,5 decir "Nombre: " obtener v_nom
    leer

    buscar (v_nom)

    si encontrado()
    @07,5 decir "Nombre: " obtener nom
    @09,5 decir "Estatuto: " obtener stat
    @11,5 decir "Contraseña: " obtener pass
    @13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
    leer

    si v_rep="Y"
    pantalla()
    eliminar
    alerta("Ficha en eliminación")
    sino
    alerta("Ficha no eliminada")
    fin si
    fin=.F.

    sino
    alerta(v_nom+", no existe en nuestra base")
    pantalla()
    fin=.F.
    fin si

    fin si
    fin hacer
    fin hacer

    caso principal = 2

    pantalla()
    blanco()
    buscar (v_nom)

    si encontrado()
    @07,5 decir "Nombre: " obtener nom
    @09,5 decir "Estatuto: " obtener stat
    @11,5 decir "Contraseña: " obtener v_pass
    @13,5 decir "¿Eliminar?: " obtener v_rep PICTURE "Y"
    leer

    si v_rep="Y"
    pantalla()
    reemplazar nom con v_nom
    reemplazar stat con statut[resu1]
    reemplazar pass con v_pass
    reemplazar id con resu1
    alerta("Su ficha ha sido modificada")
    sino
    alerta("Su ficha no ha sido eliminada")
    fin si
    fin=.F.

    sino
    alerta(v_nom+", no existe en nuestra base")
    pantalla()
    fin=.F.
    fin si

    caso principal = 3
    ir arriba
    acColumnas={"nom","stat","pass","id"}
    dbedit(2,1,24,79,acColumnas)

    caso principal = 4
    RETORNAR

    FIN CASO

    caso test=2
    esperar

    FIN CASO

    enddo
    ENDDO

    **************************************************************
    función pantalla()
    limpiar
    @1,02 aviso "SUPER USUARIO"
    @1,23 aviso "JEFE/EMPLEADO"
    @1,45 aviso "LISTA DE USUARIOS"
    @1,65 aviso "VOLVER ATRÁS"
    retornar

    función blanco()
    v_nom=espacio(15)
    v_statut=espacio(10)
    v_pass=espacio(10)
    v_id=0
    v_rep=espacio(1)
    retornar
    0
    1. Bernard.Mouille
       
      Hola Jeffrey,

      No tengo mucho tiempo en este momento, pero intenta modificar:

      INDICE EN NOM TO (tu índice) has puesto pasar
      ESTABLECER INDICE A (tu índice)
      en el primer bucle .T. no sale, intenta poner
      HAZ MIENTRAS fin


      Miraré después de mis vacaciones

      Felices fiestas

      BM
      0
    2. JEFFREY T
       
      ¿Alguien más que Bernard puede ayudarme???????????

      ¿POR FAVOR???
      0
      1. faycal > JEFFREY T
         
        Hola Jeffrey, veo que el programa de Bernard sobre la contraseña es muy, muy, muy, muy, muy complicado. Si no has encontrado respuesta, contáctame en mi correo
        faycal.trans@yahoo.fr.
        0
    3. faycal
       
      Para su contraseña, después de compilar, dio los siguientes errores
      problema de declaración
      1 ha declarado v_id=0
      2 en locate for (id=1)
      hay una declaración de id

      solución, o declare id=0
      y deje el ciclo for (id=1)

      o deje v_id=0
      y cambie locate for (v_id=1)

      si se trata de otro problema, contácteme en mi correo
      faycal.trans@yahoo.fr
      0
  3. rezak la lumiere
     
    utiliza esta función para verificar la exactitud de una contraseña
    Function PWORD(mp)
    local ret_val:=.T.
    tone(500,1)
    setcursor(1)
    Set Color To 15/1, 0/7
    dispbox(12,19,14,55,1)

    For j:= 1 To 3

    @ 13, 20 Say "INGRESE LA CONTRASEÑA: "
    b:= ""

    @ 13,45 Say " "
    @ 13,45 Say ""
    For i:= 45 To 52
    a:= 0
    a:= InKey(0)
    If (a == 13)
    Exit
    EndIf
    b:= b + Chr(a)

    @ 13, i Say "."
    sound(350,1)
    Next
    if ( ret_val := (upper(alltrim(b)) == upper(alltrim(mp))) )
    b:= "1"
    Exit
    j:= 4
    EndIf
    sound(350,1)
    InKey(0.1)
    sound(300,1)
    Next

    If (b != "1")
    Set Color To 7/0
    quit

    Else
    sound(300,1)
    Return ret_val
    Endif

    (lib funkcy y ct3 )
    0
    1. rezak la lumiere
       
      Vous demandez à l'utilisateur de sélectionner ou de saisir son "USER"
      c'est à vous de voir et après vous allez lire le "USER" dans un fichier et récupérer le mot de passe de préférence crypté avec les fonctions CRYPT ET DECRYPT dans une variable et pword(variable)
      l'utilisateur va saisir le mot de passe s'il est authentifié alors il accède sinon il refait ça 3 fois et après il quitte le programme

      bonne chance!
      0
      1. JEFFREY T > rezak la lumiere
         
        Bouh, ¡es para dentro de una semana y no logro nada!

        ¿Quién hizo este maldito lenguaje de programación? ¡¡Horrible!!

        ¡Bouhhhhhhhhh, estoy desanimado! Además, en 2 semanas no he avanzado porque no va bien.

        ¿Qué es lo que no funciona en mi programa de arriba y cómo podría mejorarlo?

        ¡Me dirijo a ustedes!

        Gracias de antemano.

        JEFFREY T
        0
    2. babords Mensajes publicados 2 Estado Miembro
       
      Hola Rezak, estoy buscando bibliotecas para Clipper 5, soy un programador autodidacta, gracias por tu respuesta...
      0
  4. faycal
     
    Hola Jeffrey, si no has encontrado el programa del mat de passe, contáctame en mi correo
    faycal.trans@yahoo.fr
    0