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

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
JEFFREY T Mensajes publicados 1 Estado Miembro
 
Bernard Mouille,

¿Siempre de vacaciones o me has olvidado?

LoL

Realmente necesito tus linternas


JEFFREY T
0
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
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
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
JEFFREY T
 
¿Alguien más que Bernard puede ayudarme???????????

¿POR FAVOR???
0
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
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
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
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
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
babords Mensajes publicados 2 Estado Miembro
 
Hola Rezak, estoy buscando bibliotecas para Clipper 5, soy un programador autodidacta, gracias por tu respuesta...
0
faycal
 
Hola Jeffrey, si no has encontrado el programa del mat de passe, contáctame en mi correo
faycal.trans@yahoo.fr
0