Petite amélioration du source du mot de passe de quake" (pour débutants)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 444 fois - Téléchargée 33 fois

Contenu du snippet

En fait c'est pas trop compliqué (g réussi à faire ça assez vite en étant débutant) mais ça améliore un peu le source de Quake (Pas le jeu comme l'a cru un de mes potes, Quake est le pseudo d'un programmeur de Codes Sources) qui était une bonne base mais inéficace, merci à lui quand-même pour m'avoir donné une base pour faire ce petit source(désolé pour les erreurs de construction du source, pour compléter la lisibilité j'ai ajouté pas mal de commentaires.

Source / Exemple :


procedure TForm1.FormCreate(Sender: TObject); //Ce code est à rentrer dans la partie Evénements de l'inspecteur d'objets à l'onglet ""OnCreate""
const
    MotDePasse = 'Le mot de passe choisi est à rentrer ici';
var
    Reponse: string;
    DonneReponse: boolean;//Pour les novice, boolean sert à affecter à une variable la valeur true (vrai) ou false (faux)
label label1;
begin
    DonneReponse := InputQuery('.::Attention::.', 'Entrez le mot de passe !', Reponse);
    if DonneReponse then
    begin
      if Reponse = MotDePasse then
      Form1.Show
      else
        begin //Dans le cas où l'utilisateur entre un mauvais mot de passe, le programme ouvre la même fenêtre que la première, mais avec un message différent "Entrez un mot de passe valide !"
        label1:// cible du goto label1
        Reponse := '';
         DonneReponse := InputQuery('.::Erreur::.', 'Entrez un mot de passe valide !', Reponse);
         if DonneReponse then
          begin
           if Reponse = MotDePasse then
            Form1.Show
            else
            goto label1 //Ouvre de nouveau la fenêtre avec les instructions en cas de mauvais mot de passe
          end
         else                     //si la fenêtre est quittée
         Application.Terminate;   // ou si on clique sur annuler
        end;                             //le programme se ferme
    end
   else                      //idem, mais cette fois ci
   Application.Terminate;   //c'est pour la deuxième fenêtre, celle qui s'ouvre quand
end;                                         //l'utilisateur a entré un mauvais mot de passe
end.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
50
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
5 février 2004

Ok ça marche merci beaucoup, en fait j'ai choisi GOTO parce que je n'ais pas encore fini de lire mon bouquin ("Borland Delphi 7" collection : "Le tout en poche" édition : "CompuPress") que je conseille vraiment aux débutants. En tout cas merci pour ton aie Partagas !
Messages postés
30
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
1 juin 2004

alors, le goto est deconseille parcequ'il boruille la lisibilite du code. par exemple en lisant ta source, je n'ai pas fait attention au "label", alors quand je suis tombe sur le Goto, j'ai du me mettre a sa recherche. Une boucle de controle est preferable, car d'une part tu testes reellement tes conditions, et d'autre part, tu encapsules tes instructions dans des bornes mieux definies. enfin, c'est mon opinion. Goto, est plus une subsistance des anciens langages (je pense au basic surtout...). Bref, il vaut mieux preferer REPEAT ou WHILE.
Sinon, pour le etoiles, je ne crois pas que ce soit possible avec un InputQuery, donc il faut que tu crées une fiche avec un Edit, et tu changes sa propietes PasswordChar. Ensuite, ta fiche renvoie une valeur booleene, comme le ferait un InputQuery.

au fait, ma source ne marche pas... desole...
ca, c'est plus correct:

procedure TForm1.FormCreate(Sender: TObject);
const Mot='antoine';
var rep: string;
DonneRep: boolean;
begin
DonneRep := InputQuery('.::Attention::.', 'Entrez le mot de passe !', Rep);
if Donnerep
then
repeat
if rep<>mot
then
begin
DonneRep := InputQuery('.::Erreur::.', 'Entrez un mot de passe valide !', Rep);
if DonneRep=false then Application.Terminate;
end
else
Showmessage('Mot de passe Correct');
until (rep=mot) or (DonneRep=false)
else
begin
Showmessage('Application Protégée par Mot de Passe');
application.terminate;
end;
end;

end.
Messages postés
50
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
5 février 2004

Merci beaucoup, j'ai 2 petites questions:
1 - Pk c'est déconseillé d'utiliser des GOTO ?
2 - Et comment on fait pour que le mot de passe entré apparaisse sous forme de petites étoiles ?
Si qq1 pouvait m'aider ce serait sympa !
Ah, une remarque sur ta source Partagas, elle a pas l'air de fonctionner. Même quand on entre le bon mot de passe, le message d'erreur "Application protégée par mot de passe" s'affiche.
Messages postés
30
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
1 juin 2004

si je peux me permettre, tu peux faire plus court, avec la meme idee, et sans GOTO:

procedure TForm1.FormCreate(Sender: TObject);
const Mot='antoine';
var rep: string;
DonneRep: boolean;
begin
if DonneRep = InputQuery('.::Attention::.', 'Entrez le mot de passe !', Rep)
then
repeat
begin
DonneRep := InputQuery('.::Erreur::.', 'Entrez un mot de passe valide !', Rep);
if DonneRep=false then Application.Terminate;
end;
until (rep=mot) or (DonneRep=false)
else
begin
Showmessage('Application Protégée par mot de passe!');
Application.terminate;
end;
end;

end.


mais pour une debutant comme tu dis, moi je trouve ca deja bien. Enfin un debutant qui cherche au lieu d'attendre une reponse toute cuite!
Messages postés
131
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
19 janvier 2004

Je crois que tu vas te faire gueuler dessus parce que tu as utilisé des goto (il faut éviter)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.