IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Entrée au clavier sous forme ****** [Turbo Pascal]


Sujet :

Turbo Pascal

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Entrée au clavier sous forme ******
    Voilà je cherche à faire un programme d'authentification avec login et mot de passe.
    J'ai déjà tout fait et cela marche très bien (en grosse partie grâce à Pascail) mais j'aimerais l'améliorer : je voudrais que lorsque l'utilisateur entre son mot de passe, s'affichent à l'ecran des étoiles...
    J'ai essayé d'effacer la ligne et chaque fois que l'utilisateur frappe une touche et d'afficher une * mais ça bugge à mort, j'ai jamais vu ça !!
    Merci de votre aide

  2. #2
    tintin22
    Invité(e)
    Par défaut
    un bout de code peut-être, pour pouvoir t'aider!

  3. #3
    Membre averti Avatar de charly
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 329
    Points : 358
    Points
    358
    Par défaut
    sa depant si tu es en mode text ou en mode graphique .... en mode text , sa ne doit pas etre compliquer d intercepter les touches et en mode graphique , tu peux bidouiller , je pense , sa depant aussi du compilot , mais je suppose que c est tp7 ...
    6*8 =42

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    C'est simple : tout ce passe avec Readkey, de l'unité crt. Tu fais une boucle repeat ou while qui récupère chaque touche tapée, et les place dans une string. Ce qu'il faut savoir, c'est que Readkey lit une touche au clavier mais ne l'affiche pas à l'écran. Donc quand l'utilisateur du programme tape une touche, il te suffit d'afficher une étoile au lieu de la lettre qu'il tape. En mode texte, tu peux te débrouiller avec gotoxy, mais en mode graphique il faut utiliser outtextxy en incrémentant x de la taille de la police+1 ( soit en général 9 ), pour que le tout soit à peu près beau... N'oublie pas aussi que pour faire un truc sympathique, il "faut" gérer les touches spéciales du type "retour", "suppr", "echap".... et évidemment "Entrée".
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Tiens ! Notre Rigolo de Kermess est parmi nous !

    Tout comme l'a dit Wormful, il te suffit d'intercepter les touches avec ReadKey.
    Néanmoins, il n'est pas nécessaire d'utiliser GotoXY. Write suffira.

    Il te suffit de changer tous les codes clavier au-dessus de 32 en étoile, et d'afficher normalement ceux en-dessous (dits codes de contrôle).

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    ok merci je vais essayer 8)

  7. #7
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Gotoxy peut être utile pour gérer les touches spéciales. Quoique... Ca doit marcher sans peut-être... Oh faites comme vous voudrez, les deux marchent !!
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 107
    Points : 279
    Points
    279
    Par défaut
    En tout cas, fait gaffe a la touche retour( backspace ), ( je crois que c'est le code #8 ), si la personne se trompe :-!

    @++ Mathieu
    Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.

  9. #9
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Aucun problème avec les touches de contrôle si tu es en mode texte ! Il suffit de les balancer à la sortie standard pour que l'action nécessaire s'effectue.

    Pour reprendre l'exemple du retour arrière (code #8 ), il suffit de faire Write( #8 ); pour revenir d'une position en arrière.
    De la même manière, Write( #10 ); descend le curseur d'une ligne.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  10. #10
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 218
    Points
    218
    Par défaut
    salut
    j'ait essayer avec le code suivant j'ais un tout petit probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    program pass ;
    uses wincrt ;
     
     type
    mot =string[25];
    var
    i,nf:integer;
    nom : mot;
    begin
    writeln ('******************************************************************************** ');
    writeln ('****                              top secret                                **** ');
    writeln ('******************************************************************************** ');
    write ('tapper le mot du pass :  ');
    repeat
     i:=0;
    repeat
    i:=i+1;
     
      nom[i] := Readkey;
      Write('*');
      until (chr(13)=nom[i]);
     ClrScr;
    if nom <>'323255'then{ ici le mot de pass est 323255chr(13)}
        begin
        writeln( 'le mot de pass que vous vener de rentrer est incorecte ');
     
          write ('retapper le:  ');
        end
     else
         begin
          writeln ('*-*/bienvenu dans le programme oficielle\*-* ' );
          writeln ('votre nom est "pascal" ');
     end;
     until(nom='323255');
      write ('ok');
    end.
    quand je l'execute a l'entré du mot de pass il fait la lecture du mot de pass plus chr(13)(dans l'exemple)et lui ajoute
    et c'est pas ca ce que je veut
    je croi que j'etait claire
    il te sufi de resoudre mon probleme pour resoudre le tien
    merci de m'eclairer et couriger mes fotes

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 6
    Points : 8
    Points
    8
    Par défaut j'ai vu ça
    j'ai deja vu un prog de saisie de mot de passe ds ce forum
    il est ds le sujet de "comment crypter" je crois
    ya un source de pascail en fin je crois que c'est lui
    il saisit la cle d'encryptage sous forme de * vous devrez examiner le source
    allez bye
    ça sera pour une prochaine fois

  12. #12
    Membre actif

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 107
    Points : 279
    Points
    279
    Par défaut
    Le source n'est pas de moi, mais enfin ...

    http://www.developpez.net/forums/vie...omment+crypter

    La partie de code interessante est celle là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
             Repeat 
                {$I-} 
                key[lettre] := readkey; 
                {$I+} 
                If ((Ord(key[lettre]))=13) Then Begin MP_long := MP_long-1; break; End; 
                If (IOresult=1) Or (MP_long=0) Then Writeln('Pas d''entr‚e...'); 
                Textcolor(14); 
                Write('*'); 
                If (key[lettre] = espace) or (key[lettre] in alphabmaj) or (key[lettre] in alphabmin) 
                   or (key[lettre] in chiffres) Then valeur_entree_valide := True 
                Else 
                   Begin 
                      valeur_entree_valide := False; 
                      break; 
                   End; 
                MP_long := MP_long+1; 
                lettre := lettre + 1; 
             Until ((Ord(key[lettre]))=13);
    Il suffit de bien l'étudier, c'est pas compliquer du tout, et d'aller voir le code original,pour les variables !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Const alphabmaj : lettres = ['A'..'Z']; 
          alphabmin : lettres = ['a'..'z']; 
          chiffres : lettres = ['0'..'9']; 
          espace = ' ';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Var   carBin            : Array[1..8] Of Byte; 
          key               : Array[1..15] Of Char; 
          cpt ,cpt0, cpt1, debut, I, lettre  : Integer; 
          erreur, MP_long, mult, nbcar, nbr  : Integer; 
          position, R, reste, resultat       : Integer; 
          Caractere, PosBit, Register, RegChar, RegStr : String; 
          valeur_entree_valide         : Boolean; 
          ert : real;
    Tout mettre, ça ne sert pas a grand chose ...
    et, pis : un type important !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type  lettres = Set Of Char;
    Voila, essaye c'est pas compliqué !

    @++ Mathieu
    Chaque jour, l'homme crée des choses plus grandes, meilleures et sûres, et chaque jour, la nature crée des idiots plus performants. Pour l'instant, je pense que la nature gagne.

  13. #13
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Il est toujours pas plié ce problème ? C'est pourtant pas si compliqué que ça... Enfin je pensais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    var
      Pass: string;
      Ch: Char;
    begin
    Pass := '';
    repeat
    Ch := ReadKey;
    case Ch of
    #8: begin
        Write( #8);
        Delete(Pass, Length(Pass), 1);
        end;
    #13: ; { On ne fait rien ici... }
    else 
      begin
      Pass := Pass + Ch;
      Write('*');
      end;
    end;
    until Ch = #13;
    WriteLn;
    WriteLn('Mot de passe entré : ', Pass);
    end;
    C'est à améliorer, mais un début...

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/12/2012, 16h57
  2. Tri d'une matrice (entrée sous forme de vector)
    Par MoiJF dans le forum Débuter
    Réponses: 6
    Dernier message: 27/04/2009, 05h36
  3. FRM-10200 sous Forms 10G - raccourci clavier
    Par lanssard dans le forum Forms
    Réponses: 1
    Dernier message: 23/10/2007, 13h56
  4. Réponses: 2
    Dernier message: 15/12/2005, 10h15
  5. Réponses: 4
    Dernier message: 29/11/2005, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo