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 ?
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:
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 ?
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:
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.