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

Langage Delphi Discussion :

problème sur Tform.Showmodal


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut problème sur Tform.Showmodal
    Bonjour,

    J'essaie depuis quelques heures de faire une fiche ID /Mdp pour une connexion à une base de donnée Firebird. Chose classique, mais qui me pose soucis dans le cas ou l'un des deux éléments est faux.
    en voci mon code :

    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
    37
    38
    39
    40
    41
    42
     
    procedure TFPrincipal.OBManuel(Sender: TObject);
    Var Username, Psw, MessageErreur,erreurCode: String ;
        Erreur : boolean;
        E : EIBInterbaseError;
     
    begin
      Erreur:=true;
      DM.Emploi.Connected:=False;
     
      While erreur do begin
     
             if FMdp.Showmodal = Mrok then begin
               username := FMdp.EID.TExt;
               psw := Fmdp.EPsw.TExt;
     
               DM.Emploi.params.Clear;
               DM.Emploi.params.Add('user_name='+username) ;
               DM.Emploi.params.Add('password='+psw);
     
               try
                  DM.Emploi.connected:=true;
               Except
                   on Err:EIBInterbaseError do begin
                     erreurcode:=inttostr(Err.IBErrorCode);
                     MessageErreur := Err.Message;
                     ShowMessage(erreurcode +' : '+MessageErreur);
                     Erreur:=True;
                   end;  // du If traitement erreur IB
     
               end;      // du try 
     
            end;         // du premier If
     
           FMdp.release;
      end;               // du While 
     
     
    ...
     
     
    end;
    Si la paire ID / Password est bon, tout est ok. Par contre, si l'un des deux n'est pas bon, le programme affiche un message et doit redonner la fenêtre pour entrer de nouvelles valeurs.

    Le soucis, c'est lors du second affichage de ma fenetre par showmodal qui provoque une erreur Violation d'accès mémoire. Il y a certainement une chose que je n'ai pas vu. Il y a très très très longtemps que je n'ai pas fait de développement, et c'est juste pour lr Fun, mais c'est un peu rageant.

    Si une bonne âme pouvait me dire ou je fais erreur, cela serait sympas.

    Merci à vous.

    P.S. : je suis sur Delphi XE2

  2. #2
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 104
    Points
    19 104
    Par défaut
    Si FMdp est créée automatiquement, alors vire le FMdp.Release qui ne sert à rien.

    Si FMdp est créée dynamiquement, il faut mettre le FMdp.Release après le End; correspondant au While. Sinon tu détruis la fiche alors que tu en as encore besoin.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci Nono40 de te pencher sur mon problème.

    Ma fiche est créé automatiquement. J'ai donc viré le release, mais mon problème persiste. Au deuxième Showmodal (provoqué par la boucle), j'ai toujours mon erreur de violation d'accès.

    Pour essayer de comprendre :

    La fonction Showmodal me montre la fenêtre MdP lorsque j'en ai besoin. En cliquant sur le bouton OK de cette fenêtre, je retourne sur la fenêtre principale de mon programme, ou je peux récupérer le texte de mes deux edit de la fenêtre MdP. Cette fenêtre disparait de ma vue, mais est-elle détruite ? y-a-t-il une fonction inverse à Showmodal pour l'effacer et la relancer par la suite ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 213
    Points : 41 477
    Points
    41 477
    Billets dans le blog
    63
    Par défaut
    Pourquoi ne pas s'y prendre différemment ?
    soit a) en utilisant la boite dialogue user/password de la connexion
    b) en faisant le test de la connexion dans la form showmodal et non en dehors ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci SegioMaster,

    J'aurai pu penser à la solution b plus tôt, comme quoi, je suis pas mal rouillé.

    Pour la solution a, c'était ma première réflexion. J'utilise une FireBird, avec les composant IB. Normalement, lorsque l'option Loginprompt est activé, je devrais avoir la boite. Mais ce n'est pas le cas, d'ou cette recherche.

    Je teste cela ce soir, et vous donnerai mon résultat.

    Bonne journée

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Correction....

    Je viens de refaire la manipulation avec le loginprompt. Cela marche. il me manquait juste DBLogDlg dans le Uses de ma fiche principale. Je devais avoir des peaux de bananes devant les yeux hier... lol

    Merci encore à vous.

    Bonne Journée.

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

Discussions similaires

  1. Problème sur la recherche fulltext en v4 !
    Par poppa dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/05/2004, 23h06
  2. Problème sur fiche MDIchild
    Par nivet dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/01/2004, 08h07
  3. Problème sur GetPrivateProfileString ???
    Par Bordelique dans le forum Langage
    Réponses: 7
    Dernier message: 25/06/2003, 22h15
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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