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 :

Un bug à faire devenir chauve


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut Un bug à faire devenir chauve
    J'ai un étrange problème qui semble n'arriver qu'avec un seul utilisateur de mon logiciel. Il est le seul à l'avoir rapporté et je n'ai jamais eu ce problème.

    Il obtient une erreur (access violation) au démarrage du logiciel.

    J'ai pu trouver la ligne fautive

    checkregfrm:=Tcheckregfrm.create(self);

    checkregfrm est une forme tout ce qu'il y a de plus banale avec aucun code dans son oncreate. 3 boutons et quelques lignes de code.

    Je ne vois décidément pas ce qui peut causer l'exception.
    La ligne est exécutée dans le onactivate de la forme principale et je me demande si cela ne serait pas une piste.

    Une idée ?

    EDIT: je sais que la description du problème est vague mais le problème l'est aussi Il n'y a rien selon moi qui justifie l'exception à part peut-être le fait que la création de cette fenêtre se fasse dans le onactivate de la forme principale. Y-a-t'il contre-indication ?

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Est-ce qu'il n'y a pas de composant "exotique" sur cette Form?
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonsoir,
    Où et comment est-elle détruite?
    Form principale? Free ou release?
    Cordialement,
    Hauwke

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par Pedro204
    Salut
    Est-ce qu'il n'y a pas de composant "exotique" sur cette Form?
    Non
    Un Mainmenu
    Quelques Tedit
    et 3 tlmdspeedbutton (des boutons de ce type sont aussi présents sur la mainform)

    Où et comment est-elle détruite?
    En utilisant action:=cafree dans le onclose de tcheckregfrm

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Points : 143
    Points
    143
    Par défaut
    As tu essayé d'utiliser cette form dans une appli de test (avec seulement une form principale et celle qui te pose problème) ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par Alfred12
    As tu essayé d'utiliser cette form dans une appli de test (avec seulement une form principale et celle qui te pose problème) ?
    Je me propose de le faire mais pour le moment j'ai déplacé le code dans le onshow. Je lui ai envoyé l'exe et j'attend une réponse. Vraiment un étrange problème.

    Il n'y a tellement rien sur cette form que je ne vois pas ce qui peut causer une exception.

    Il a Win98 en version allemande. Sais pas si ça peut être une piste.

  7. #7
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Si ça peut t'aider, j'ai eu un problème similaire : une access violation sur la création d'une forme mais qui ne se produisait que sur une machine !
    Le problème se situait dans le DFM de ma forme, une ComboBox dont le premier item était à vide. En remplacant par un Espace ça a fonctionné.
    Bon comme tu n'as pas de combos ça ne doit pas être ça mais je te conseille d'aller faire un tour dans ton DFM et faire une recherche sur le texte (pour moi c'était ça )
    Sinon je sais que Borland propose des updates de Delphi qui permettent de corriger ce type de problèmes. (plusieurs bugs du compilateur ont été corrigés)


    Ce n'est pas parce que les choses sont difficiles qu'on ne veut pas les faire
    C'est parce qu'on ne veut pas les faire qu'elles sont difficiles
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Bon le déplacement du code n'a rien résolu.
    Le plus étrange problème que j'ai jamais vu.
    C'est très rageant car il n'y a rien dans le oncreate de cette forme. Je ne vois aucune raison qui peut justifier une violation d'accès sur UN SEUL POSTE particulier et pas sur les autres alors que la fenêtre ne fait pas appel à une api windows et que ses composants sont aussi ailleurs dans le projet sans causer de problo.

    ahhhhhhh

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par Guile
    Si ça peut t'aider, j'ai eu un problème similaire : une access violation sur la création d'une forme mais qui ne se produisait que sur une machine !
    Le problème se situait dans le DFM de ma forme, une ComboBox dont le premier item était à vide. En remplacant par un Espace ça a fonctionné.
    Bon comme tu n'as pas de combos ça ne doit pas être ça mais je te conseille d'aller faire un tour dans ton DFM et faire une recherche sur le texte (pour moi c'était ça )
    Sinon je sais que Borland propose des updates de Delphi qui permettent de corriger ce type de problèmes. (plusieurs bugs du compilateur ont été corrigés)


    Ce n'est pas parce que les choses sont difficiles qu'on ne veut pas les faire
    C'est parce qu'on ne veut pas les faire qu'elles sont difficiles
    Le DFM me semble nickel...et comme je le disais l'erreur n'apparaît que pour un utilisateur en particulier.

  10. #10
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Un utilisateur ou un poste ?

    Parce que dans mon cas c'était dû à une version de DLL de windows.

    Je sais que c'est lourd mais j'ai galéré aussi pour trouver le problème et la seule solution que j'ai eu était de compiler plusieurs versions en retirant différents composants de ma Form. J'ai pu ainsi cibler le composant à problème.

    Je ne suis pas un expert mais pour moi c'est la création d'un de tes composants qui provoque cet erreur
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Malheureusement il semble que ça ne soit pas le problème et j'en suis totalement confus.

    J'ai créé un nouveau projet avec un seul bouton qui fait apparaître la dite fenêtre. Je l'ai envoyée à l'utilisateur et il n'a eu aucune erreur. Là c'est le top de la connerie. Je ne sais pas comment c'est possible.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par Guile
    Un utilisateur ou un poste ?

    Parce que dans mon cas c'était dû à une version de DLL de windows.

    Je sais que c'est lourd mais j'ai galéré aussi pour trouver le problème et la seule solution que j'ai eu était de compiler plusieurs versions en retirant différents composants de ma Form. J'ai pu ainsi cibler le composant à problème.

    Je ne suis pas un expert mais pour moi c'est la création d'un de tes composants qui provoque cet erreur
    Le problème est que la forme qui cause problème utilise des composants qui se retrouvent partout ailleurs dans le projet sans causer d'erreurs. Il n'y a que quelques boutons, un tmenu et des tedits standards. Rien d'exceptionnel

    Merci quand même de vos suggestions. J'apprécie.

  13. #13
    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 : 56
    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 101
    Points
    19 101
    Par défaut
    Quelle version de Delphi au fait ?

    Sous Win98 j'ai déjà vu des violations d'accès aléatoires avec des programmes en Delphi 5. Et ce sur des lignes qui ne pouvaient pas provoquer d'erreur.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Delphi 6

    C'est vraiment bizarre a l'extreme.

    Quelques notes:

    1- J'ai essayé la création de la forme dans onactivate. ERREUR
    2- Déplacé le code dans onshow. ERREUR
    3- Déplacé le code dans un bouton. ERREUR
    4- Déplacé la fenêtre en question dans un autre projet. PAS D'ERREUR

    Incompréhensible. L'erreur apparaît carrément à la ligne de création de la fenêtre.

    Là je fais un autre essai . J'ai mis la fenêtre dans la liste des fenêtres auto-crées. J'attend des nouvelles de l'utilisateur.

    EDIT:
    ah j'oubliais de dire que l'utilisateur en question a aussi testé le logiciel sur son 2e ordi et il n'a pas d'erreur . C,est vraiment typique de cet ordinateur en question qui a win98 allemand.

  15. #15
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Sauf errur de ma part, Win 98 1ere edition n'est pas compatible avec D6.
    Ce ne pourrait pas etre la raison ? Peut etre est-ce le seul poste en 98 1ere edition et que les autres sont soit du 98 SE soit 2k ou superieur.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Citation Envoyé par pimousse9
    Sauf errur de ma part, Win 98 1ere edition n'est pas compatible avec D6.
    Ce ne pourrait pas etre la raison ? Peut etre est-ce le seul poste en 98 1ere edition et que les autres sont soit du 98 SE soit 2k ou superieur.
    Théorie qui serait valide si le reste du logiciel ne fonctionnait pas
    Tout le reste fonctionne, y compris la création de fenêtres vraiment similaires à celle qui cause problème.

    C'est vraiment très très très frustrant.

    Pour info, il s'agit de la fenêtre d'enregistrement (numero de commande et de serie) du logiciel. C'est certain que je pourrais prendre la voie facile et lui envoyer une version qui omet cet enregistrement mais je tiens à trouver le problème au cas ou cela arrivait à d'autres utilisateurs.

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Alors là c'est cocasse mais le problème est résolu...en quelque sorte!

    Le déplacement de la fenêtre dans l'auto-création semble avoir résolu le problème !

    Tout de même spécial n'est-ce pas ?

    Bon je vais vivre avec ça. J'ai pas beaucoup de fenêtre auto crées et je la libère très tôt après le lancement donc c'est pas trop encombrant côté mémoire.

    N'empêche que je ne vois toujours pas pourquoi la fenêtre s'auto-crée correctement mais que la création dynamique cause problème.

    Si quelqu'un a une idée je serais bien intéressé de l'entendre

  18. #18
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut Re: Un bug à faire devenir chauve
    Salut !
    Je résume :
    Citation Envoyé par sfpx
    checkregfrm:=Tcheckregfrm.create(self);
    ...
    cet ordinateur en question qui a win98 allemand
    Citation Envoyé par sfpx
    N'empêche que je ne vois toujours pas pourquoi la fenêtre s'auto-crée correctement mais que la création dynamique cause problème.

    Si quelqu'un a une idée je serais bien intéressé de l'entendre
    Explications plus que probable :
    1) Dans un cas, le Owner de la fiche, c'est self, dans l'autre, c'est Application. Moi j'aurais plutot écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    checkregfrm:=Tcheckregfrm.create(Application);
    2) dans ton cas d'origine, la seule explication, c'est soit que self n'existe pas encore au moment où ce code est appelé! soit Windows98, n'accepte pas comme propriétaire de fiche une autre fiche : Un problème de DLL Windows.

    D'autres pistes qui ne sont pas de ton fait :
    Son Windows 98 possède-t-il toutes les mises à jours qui ont été sorti par Microsoft ?
    Est-ce que son Windows utilise des DLL Windows 95 qui auraient été installées par mégarde lors de l'installation d'un autre logiciel en écrasant et remplaçant les DLL Windows 98 ?
    Bidouilleuse Delphi

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut Re: Un bug à faire devenir chauve
    Citation Envoyé par waskol
    Salut !
    Je résume :
    Citation Envoyé par sfpx
    checkregfrm:=Tcheckregfrm.create(self);
    ...
    cet ordinateur en question qui a win98 allemand
    Citation Envoyé par sfpx
    N'empêche que je ne vois toujours pas pourquoi la fenêtre s'auto-crée correctement mais que la création dynamique cause problème.

    Si quelqu'un a une idée je serais bien intéressé de l'entendre
    Explications plus que probable :
    1) Dans un cas, le Owner de la fiche, c'est self, dans l'autre, c'est Application. Moi j'aurais plutot écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    checkregfrm:=Tcheckregfrm.create(Application);
    2) dans ton cas d'origine, la seule explication, c'est soit que self n'existe pas encore au moment où ce code est appelé! soit Windows98, n'accepte pas comme propriétaire de fiche une autre fiche : Un problème de DLL Windows.

    D'autres pistes qui ne sont pas de ton fait :
    Son Windows 98 possède-t-il toutes les mises à jours qui ont été sorti par Microsoft ?
    Est-ce que son Windows utilise des DLL Windows 95 qui auraient été installées par mégarde lors de l'installation d'un autre logiciel en écrasant et remplaçant les DLL Windows 98 ?
    Merci de ton commentaire.

    J'ai oublié de tester la création avec application au lieu de self. Je voulais l'essayer puis ça m'est sorti de la tête.

    Cependant il y a 2 points qui éliminent probablement cette théorie.

    1. Je lui avait envoyé un projet test qui ne contenait qu'une form principale avec un bouton qui créait la dite fenêtre avec la même instruction que dans mon logiciel (.create(self)) et l'usager n'a pas eu d'erreur

    2. Toutes mes autres fenêtres se créent avec le paramètre "self" et elles fonctionnent toutes sans problème pour cet usager.

    Je crois sincèrement que ce problème va demeurer un mystère pour nous tous Du moment que j'ai trouvé une solution je ne m'en fais pas trop.

Discussions similaires

  1. Réponses: 17
    Dernier message: 22/02/2010, 18h52
  2. Le zéro bug comment faire?
    Par Donaldo dans le forum Langages de programmation
    Réponses: 32
    Dernier message: 11/07/2008, 20h40
  3. Réponses: 1
    Dernier message: 20/03/2008, 11h09
  4. Quel outil pour faire du bug report ?
    Par Tourix dans le forum Autres
    Réponses: 5
    Dernier message: 18/01/2007, 22h33
  5. [MySQL] Petite optimisation à faire… tit bug en perspective !
    Par almisuifre dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 20/02/2006, 21h58

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