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

 Delphi Discussion :

Petites questions de débutant


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut Petites questions de débutant
    Hello, hello, j'apprend tout doucement le pascal/delphi

    malheureusement, j'ai quelques soucis

    J'ai un Form1 avec un bouton qui affiche un 2 eme Form nommé Verrou qui dois locker ma première Form.

    Mes soucis :

    1er :
    Quand je click sur mon bouton Valider:

    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
     
     
    procedure TVerrou.BitBtn1Click(Sender: TObject);
    var
    MotDePasse : String;
    FichierIni : TIniFile;
    begin
     
         FichierIni:=TIniFile.Create('./config.ini');
         MotDePasse := FichierIni.ReadString('Protection','Password','INCORRECT');
         FichierIni.Free;
     
    if PChar(Verrou.Edit1) = MotDePasse then
    begin
    Verrou.Hide;
    end
    else
    begin
    MessageDlg(('Mot de passe incorrect'),mtError, mbOKCancel,0);
    end;
     
    end;
    Mon mot de passe est toujours faut.
    Pourtant dans mon INI :

    [Protection]
    Password=774411

    Mon champ Edit1 est en Password #1 (petits rectangles)

    2 eme problème :

    La première Form est toujours disponible, pas moyen d'obliger la FormVerrou à être toujours au top ??

    3 eme problème :

    malgré mon borderStyle en bsDialog j'ai toujours la petite croix qui marche, et qui nique ma protection
    Si je met en BsNone j'ai plus rien du tout

    4 eme probleme :

    un bon système pour crypter mon mot de passe dans le .ini ?

    5 eme probleme :

    dans ma casse password quand je presse "ENTER" je voudrais lancer le BitBtn1 procédure...

    Merci à tous !

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    1er pb:
    il faut comparer Edit1.Text à Mot de Passe

    2ème pb
    tu dois faire un Form2.Show alors qu'il faudrait faire un ShowModal

    3ème pb
    il existe un dialogue Mot de Passe (fichiers-nouveau-autre onglet Dialogues) que tu peux utiliser depuis ta Form1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if PassWordDlg1.ShowModal=mrOk then.....
    ça permet de t'assurer que ce dialogue a été fermé par le bouton Ok (en liaison avec le 5ème pb)

    4ème pb
    As-tu regardé dans la

    5ème pb
    regarde la propriété ModalResult de ton bouton:
    positionne le à mrOk
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Nickel!Merci!


    Encore 2 petits soucis:

    1er:

    Après : MessageDlg('Mot de passe Incorrect', mtError, [mbOK], 0);
    dans le cas d'une erreur, il ferme la Form2, pourquoi ?

    2eme:

    ModalResult = MrOk mais ca marche pas...

    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
     
      object BitBtn1: TBitBtn
        Left = 72
        Top = 64
        Width = 97
        Height = 25
        Caption = 'Valider'
        ModalResult = 1
        TabOrder = 1
        OnClick = BitBtn1Click
        Glyph.Data = {
          76010000424D7601000000000000760000002800000020000000100000000100
          04000000000000010000120B0000120B00001000000000000000000000000000
          800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00555555555555
          555555555555555555555555555555555555555555FF55555555555559055555
          55555555577FF5555555555599905555555555557777F5555555555599905555
          555555557777FF5555555559999905555555555777777F555555559999990555
          5555557777777FF5555557990599905555555777757777F55555790555599055
          55557775555777FF5555555555599905555555555557777F5555555555559905
          555555555555777FF5555555555559905555555555555777FF55555555555579
          05555555555555777FF5555555555557905555555555555777FF555555555555
          5990555555555555577755555555555555555555555555555555}
        NumGlyphs = 2
      end

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    car tu n'as pas farfouillé dans l'aide Delphi.....
    si ModalResult est positionné à mrOk ou mrCancel, la form se ferme...

    Ce qu'il faut faire:
    1/ mettre le modalresult à none
    2/ dans le code de validation: qq chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if erreur then begin
        messagedlg(...);
        EXIT;                       // pour sortir de la procédure Onclick
    end;
    Bitbtn1.ModalResult:=mrOk;
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Désolé mais je comprend rien là ...

    quand je suis dans mon Text que je fais "enter", ca n'active tjs pas le bouton Valider.

    Et quand je Valide à la main, ca merde sévère :-)

    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
    procedure TVerrou.BitBtn1Click(Sender: TObject);
    var
    MotDePasse : String;
    FichierIni : TIniFile;
    begin
     
         FichierIni:=TIniFile.Create('./config.ini');
         MotDePasse := FichierIni.ReadString('Protection','Password','INCORRECT');
         FichierIni.Free;
     
    if PChar(Verrou.Edit1.Text) = MotDePasse then
    begin
    Verrou.Edit1.Text := Pchar('');
    Bitbtn1.ModalResult:=mrOk;
    end
    else
    begin
    MessageDlg('Mot de passe Incorrect', mtError, [mbOK], 0);
    EXIT;
    end;
    Exemple:

    je tappe le bon password :
    Text se reset (ok)
    la fenetre reste ouverte.

    je retappe le pass, cette fois ca se ferme.

    mon application se "débloque".

    je réactive l'opération bloquage...

    je tappe un faux password = Erreur (ok) ++ fermeture comme si c'était valide!!

    J'capte pas trop

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    décidément ca bug ?
    je sais pas si j'ai assez détaillé, mais pourquoi lors de la première fois, faut emettre 2 fois mon pass, et ensuite faut même plus le mettre?

  7. #7
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    Plusieurs soucis:

    1/ comment est la propriété Kind de ton Bitbtn ?

    2/ dans ton code, si le pass est ok, tu positionnes modalresult; mais comme la fenêtre ne se ferme pas, le modalresult reste à mrOk.
    le coup suivant, si ton pass est KO, modalresult est toujours positionné à mrOk....

    => il faut penser à (ré)initialiser les variables et propriétés qui influent sur le fonctionnement de ton prog.
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  8. #8
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Bonjour,

    je ne comprend pas pourquoi tu utilises des pchar mais si tu veux un résultat, je te conseille de tester

    if PChar(Verrou.Edit1.Text)^ = MotDePasse^

    tester des pointeurs ensemble ne donnera pas beaucoup de résultat. mieux vaut tester le contenu

    Tinifile.readstring renvoie un string :

    pourquoi ne pas faire ainsi ?

    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
    procedure TVerrou.BitBtn1Click(Sender: TObject); 
    var 
    MotDePasse : String; 
    FichierIni : TIniFile; 
    begin 
     
         FichierIni:=TIniFile.Create('./config.ini'); 
         MotDePasse := FichierIni.ReadString('Protection','Password','INCORRECT'); 
         FichierIni.Free; 
     
    if Edit1.Text = MotDePasse then // suppression des pointeurs pchar + inutile de rappeler verrou (on est dans une procédure de verrou)
      ModalResult := mrOk // autant mettre directement le modalresult de verrou à mrok
    else 
      MessageDlg('Mot de passe Incorrect', mtError, [mbOK], 0); 
    Edit1.Text := ''; // le raz de edit1.text peut se faire ici + inutile de rappeler verrou
     
    bonne continuation
    end;

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Super merci beaucoup !!!!!

    En plus tu m'a commenté le tout, j'ai ainsi détecté mes erreurs !



    PS: Quand je suis dans mon Edit1, que je tappe Enter (comme dans toute application, ca ne valide pas mon "formulaire")

    J'ai été voir du côté des Evenements, mais à part OnKeyPress qui prends *toutes les touches* je ne vois rien...

    Y'a quand même bien moyen de faire ca facilement non?

  10. #10
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    justement dans onKeyPress

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TVerrou.edit1KeyPress(Sender: TObject, Var Key : Char); 
    Begin
    If key = #13 then // si la touche est enter : valeur 13 en hexa
      button1Click(sender); // on appelle la procédure buttonclick
    End;

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 213
    Points : 81
    Points
    81
    Par défaut
    Merci!!!!!!!!!


    voilà je laisse le code pour ceux qui voudraient se faire une boite mot de passe fun (je bosse avec des images partout) qui n'aiment pas trop le look windows.. vous avez de quoi faire là !!!


    A+ !

  12. #12
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Salut,
    Dans le OnClickEvent de ton Okbutton du Dialog Passwd tu fais par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      ModalResult:= mrnone ;
      if trim(Password.Text)='tonpassword' Then
        ModalResult:= mrOk ;
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  13. #13
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Citation Envoyé par bjl
    justement dans onKeyPress

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TVerrou.edit1KeyPress(Sender: TObject, Var Key : Char); 
    Begin
    If key = #13 then // si la touche est enter : valeur 13 en hexa
      button1Click(sender); // on appelle la procédure buttonclick
    End;
    button1.click c mieux
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  14. #14
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par Soulama
    Citation Envoyé par bjl
    justement dans onKeyPress

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TVerrou.edit1KeyPress(Sender: TObject, Var Key : Char); 
    Begin
    If key = #13 then // si la touche est enter : valeur 13 en hexa
      button1Click(sender); // on appelle la procédure buttonclick
    End;
    button1.click c mieux
    pourquoi ?

  15. #15
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    pacque le sender nest pas le meme:
    button1Click(sender): Sender ici c le TEdit
    et si tu fais Button1.click, ta pas de confusion
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  16. #16
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    justement, on peut avoir besoin, dans certains cas, de faire un test sur le sender pour réagir différamment selon le type d'objet qui demande la procedure.

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

Discussions similaires

  1. petite question de débutant
    Par debo41 dans le forum Flash
    Réponses: 7
    Dernier message: 22/04/2009, 14h42
  2. Petite question de débutant sur les lumières
    Par Clad3 dans le forum OpenGL
    Réponses: 12
    Dernier message: 05/11/2007, 22h22
  3. SessionBehavior Petite question de débutant
    Par ZOlivier dans le forum W4 Express
    Réponses: 2
    Dernier message: 28/08/2007, 13h47
  4. Petite question de débutant
    Par will2taz dans le forum VB.NET
    Réponses: 10
    Dernier message: 10/07/2007, 20h49
  5. Petite question de débutant
    Par Arry_C dans le forum Access
    Réponses: 2
    Dernier message: 03/03/2007, 21h02

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