Besoin d'aide en CLIPPER

Fermé
JEFFREY T - 18 déc. 2005 à 15:14
 faycal - 7 juin 2007 à 21:06
Bjour a tous,

J'ai des problemes en CLIPPER

Je dois créer un prog de gestion de mot de passe pour entrer dans un programme!!!

COMMENT PUIS JE FAIRE???

AIDEZ MOI SVP C'EST TRES IMPORTANTS POUR MON ANNEE SCOLAIRE merci d'avance a tous

4 réponses

Bernard.Mouille
19 déc. 2005 à 13:27
Bonjour,

Essaye un peu ça (en changeant les caractères)

* MotPasse.PRG - Mot de passe.
* ----------------------------
*
* Ceci est le programme dans lequel je dois rentrer avec un mot de passe.
*
@ 10,10 SAY "Entrez votre mot de passe : " && Pour indiquer où mettre l'affichage de la fonction MOT.
*
MotOk="dupont" && Bon mot de passe qui peut venir d'un fichier.
*
IF Mot(MotOk) && Si le bon retour.
@ 20,10 SAY "Le mot de passe est correct, bienvenue."
ELSE
@ 20,10 SAY "Mot de passe incorrect ! Accès refusé"
WAIT "Appuyez sur une touche pour quitter"
RETURN
ENDIF
*
WAIT "Appuyez sur une touche pour continuer ce programme"
*
* Programme à exécuter.
*
RETURN && Ou QUIT.
*
* --------------------------------------------------------------
*
FUNC MOT(Mot)
*
* MOT = Chaîne de caractère du mot à saisir.
*
LOCAL E:=SAVESCREEN(0,0,MAXROW(),MAXCOL()), ; && Sauvegarde écran.
R:= .F. , ; && Retour mot incorrect
V:="" , ; && Chaîne qui se construit avec les frappes clavier.
C:=0 && Valeur du caratère frappé au clavier.
*
CLEA TYPE && Vide de buffer du clavier pour éviter erreurs.
*
DO WHIL C<>13 && Sortie sur <RETURN>.
C=INKEY()
IF (C>47 .AND. C<91) .OR. (C>96 .AND. C<123) && Liste des caractères acceptés.
V=V+CHR(C) && La chaîne se construit.
@ ROW(), COL() SAY "X"
C=0
ENDI
ENDD
IF V==Mot && Si c'est le bon mot.
R=.T. && C'est vrai.
ENDIF
RETURN R


Bon développement
0
JEFFREY T Messages postés 1 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
19 janv. 2006 à 10:56
Bernard Mouille,

Toujours en Congé ou tu m'as oublié?

LoL

J'ai vraiment besoin de tes lanternes


JEFFREY T
0
Bernard.Mouille > JEFFREY T Messages postés 1 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 19 janvier 2006
19 janv. 2006 à 17:32
Bonjour Jeffrey,


Non, je ne t'ai pas oublié mais j'ai beaucoup de travail en ce moment.

Regarde un peu, j'ai fais quelques modifications à ton programme, mais je n'ai pas le temps d'approfondir :

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

Comme je te l'ai dit l'autre jour, regarde bien tes boucles pour sortir "EXIT" ou revenir en haut de la boucle "LOOP".


Bon développement


Bernard
0
Bernard,

J'aurais besoin d'un coup de main ; STP c'est toujours AUSSI IMPORTANT!!!!!!

use pass
index on pass to ind_pass

set wrap on

set color to ("w/b","w/r")

set message to 24 center

public fin
test=0

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


PUBLIC options[2]
options[1]="OUI"
options[2]="NON"


PUBLIC statut[3]
statut[1]="ADMINISTRATEUR"
statut[2]=" EMPLOYE "
statut[3]=" CHEF "

PUBLIC super[5]
super[1]="Ajout"
super[2]="Pack"
super[3]="Recall "
super[4]="Modifier "
super[5]="Supprimer "

test=0

DO WHILE .T.

go top
blanc()
locate for (id=1)

if (id <> 1)
clear
alert("Il n'y as pas d'ADMINISTRATEUR")
droit={.T.,.F.,.F.}
resu=achoice(9,15,9,27,statut,droit)

@07,5 say "Nom : " get v_nom
@09,5 say "Statut : "
@11,5 say "Pass : " get v_pass
@13,5 say "Sur : " get v_rep PICTURE "Y"
resu1=1
read

if v_rep = "Y"
append blank
replace nom with v_nom
replace stat with statut[resu]
replace pass with v_pass
replace id with resu
alert("Fiche cr‚e")
fin=.F.

else

alert("Fiche non sauv‚e")
blanc()
fin=.F.
end if
else
end if


blanc()
clear
@1,5 say "**********************************"
@2,5 say "** GESTION DE MOT DE PASSE **"
@3,5 say "**********************************"

@5,5 say "Nom : " get v_nom PICTURE "@A"
@7,5 say "Pass : " get v_pass PICTURE "@A"
read

seek(v_nom)
if found()
if v_pass = pass
if id=1
clear
menu to test
test=1
fin=.F.
else
clear
menu to test
test=2
fin=.F.
blanc()
end if
else
clear
alert("Mot de passe incorrect")
fin=.F.
blanc()
end if
else
alert(v_nom+", n'existe pas dans notre base")
fin=.F.
blanc()
end if



do while .T.

DO CASE
Case test = 1
ecran()
menu to principal

DO CASE

case principal = 1

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

do while fin

if resu = 1
ecran()
blanc()
droit={.T.,.T.,.T.}
resu1=achoice(9,18,9,30,statut,droit)

@07,5 say "Nom : " get v_nom
@09,5 say "Statut : "
@11,5 say "Pass : " get v_pass
@13,5 say "Sur : " get v_rep PICTURE "Y"
read

if v_rep = "Y"
append blank
replace nom with v_nom
replace stat with statut[resu1]
replace pass with v_pass
replace id with resu1
alert("Fiche cr‚e")
fin=.F.

else

alert("Fiche non sauv‚e")
blanc()
fin=.F.
end if

elseif resu=2
ecran()
pack
alert("Fiche supprim‚es d‚finitivement!")
fin = .F.

elseif resu=3
ecran()
recall
alert("Fiche restaur‚es")
fin = .F.

elseif resu=4
fin=.T.
do while fin
ecran()
blanc()
@07,5 say "Nom : " get v_nom
read

seek (v_nom)

if found()
@07,5 say "Nom : " get v_nom
@09,5 say "Statut : " get stat
@11,5 say "Pass : " get v_pass
@13,5 say "Delete? : " get v_rep PICTURE "Y"
read

if v_rep="Y"
replace nom with v_nom
replace stat with statut[resu1]
replace pass with v_pass
replace id with resu1
ecran()
alert("Fiche modifi‚e")
fin=.F.
else
ecran()
alert("Fiche non modifi‚e")
fin=.F.
end if
fin=.F.

else
alert(v_nom+", n'existe pas dans notre base")
ecran()
fin=.F.
end if


end do

else
fin=.T.
do while fin
ecran()
blanc()
@07,5 say "Nom : " get v_nom
read

seek (v_nom)

if found()
@07,5 say "Nom : " get nom
@09,5 say "Statut : " get stat
@11,5 say "Pass : " get pass
@13,5 say "Delete? : " get v_rep PICTURE "Y"
read

if v_rep="Y"
ecran()
delete
alert("Fiche en suppression")
else
alert("Fiche non supprim‚e")
end if
fin=.F.

else
alert(v_nom+", n'existe pas dans notre base")
ecran()
fin=.F.
end if

end if
end do
end do


case principal = 2


ecran()
blanc()
seek (v_nom)

if found()
@07,5 say "Nom : " get nom
@09,5 say "Statut : " get stat
@11,5 say "Pass : " get v_pass
@13,5 say "Delete? : " get v_rep PICTURE "Y"
read

if v_rep="Y"
ecran()
replace nom with v_nom
replace stat with statut[resu1]
replace pass with v_pass
replace id with resu1
alert("Votre fiche est modifi‚e")
else
alert("Votre fiche n'a pas ‚t‚ supprim‚e")
end if
fin=.F.

else
alert(v_nom+", n'existe pas dans notre base")
ecran()
fin=.F.
end if



case principal = 3
go top
acColonnes={"nom","stat","pass","id"}
dbedit(2,1,24,79,acColonnes)

case principal = 4
RETURN

END CASE

case test=2
wait

END CASE

enddo
ENDDO

**************************************************************
function ecran()
clear
@1,02 prompt "SUPER UTILISATEUR"
@1,23 prompt "CHEF/EMPLOYE"
@1,45 prompt "LISTE UTILISATEURS"
@1,65 prompt "RETOUR AU DOS"
return

function blanc()
v_nom=space(15)
v_statut=space(10)
v_pass=space(10)
v_id=0
v_rep=space(1)
return
0
Bernard.Mouille
30 déc. 2005 à 10:03
Bonjour Jeffrey,

Je n'ai pas trop le temps en ce moment, mais essaye de modifier :

INDE ON NOM TO (ton index) tu as mis pass
SET INDE TO (ton index)
to première boucle .T. ne sort pas, essaye de mettre
DO WHILE fin


Je regarde après mes vacances

Bonnes fêtes

BM
0
Quelqu'un d'autre que Bernard peut m'aider???????????

PLEASE???
0
faycal > JEFFREY T
7 juin 2007 à 20:46
salut jeffrey je vois que le programme de bernard sur le mot e passe est tre tre tre tre tre tre compliquer si tu na pas trouve de reponse contacter moi sur ma boite
faycal.trans@yahoo.fr
0
pour votre mot passe apres compile il a donner les erreurs suivante
problemme de declaration
1 vous avez declarer v_id=0
2 dans locate for (id=1)
il de declaration de id

solution soit que vous declare id=0
est vous laisser lacte for (id=1)

ou vous laisser v_id=0
et vous changer locate for (v_id=1)

s il s agit d un autre problemme contacter moi sur ma boite
faycal.trans@yahoo.fr
0
rezak la lumiere
13 janv. 2006 à 12:45
utilise cette fonction pour verivier l'exactitude d'un mot de pass
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 "ENTREZ LE MOT DE PASSE : "
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 et ct3 )
0
rezak la lumiere
13 janv. 2006 à 13:15
tu demand a l'utilisateur de selectionNer ou de saisir son "USER"
c'est a toi de voir et apres tu vas lire le "USER" dans un fichier et recuperer le mot de pass de preference crypter avec les fonctions CRYPT ET DECRYPT dans une variable et pword(variable)
l'utilisateur va saisir le mot de pass s'il est autentifier alors il accede sinon il refait ça 3 fois et apres il quite le programme

bon courage!
0
JEFFREY T > rezak la lumiere
13 janv. 2006 à 21:36
Bouh c'est pour dans 1semaine et j'arrive a rien!!!!!!!

Qui a FAIT CE LANGAGE DE PROGRAMMATION DE MERDE!!!!!!

Bouhhhhhhhhhhhh chui découragé! En Plus de 2sem j'ai pas avancé pcq ca va pas!

Qu'est ce qu'il ne va pas dans mon prog ci dessus et comment pourrai je l'ameliorer!???

Je m'en refère à vous!

MErci D'AvAnCe

JEFFREY T
0
babords Messages postés 2 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 31 janvier 2006
31 janv. 2006 à 21:14
Salut Rezak , je recherche des lib pour clipper 5 , je suis un programmeur autodicdacte , je te remerci de ta reponce ...
0
salut jeffrey si tu na pas trouves le programme du mat de passe contacter moi sur ma boite
faycal.trans@yahoo.fr
0