cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 2013
-
20 juil. 2009 à 17:15
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 2012
-
4 août 2009 à 13:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 4 août 2009 à 13:02
Ravi que cette source serve ^^ (et pas pour du piratage ;) )
Patrice99 je serrais ravi de savoir coder un VB6 portable en .net, si tu as des pistes, elles sont les bienvenues. (oui oui oui , je vais commencer par googeliser tout ça, mais le savoir est fait pour être partagé...)
D'ailleurs, Patrice99, si tu as modifié la dernière version de sorte a la rendre compatible avec le .net, je t'invite à me la faire parvenir. Je la mettrait à disposition des VBiens sur ce site ^^
cordialement,
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 31 juil. 2009 à 16:30
ha j'oubliais maintenant que ça marche je vais donner une bonne note, car ça faisait pas mal de temps que je voulais faire une source similaire (je cherchais où était codé les options d'impression PostScript dans la BR pour faire une installation automatique de mon logiciel Doc2Pdf) : bravo donc !
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 31 juil. 2009 à 16:26
Visual studio 2008 express, c'est bien du .Net, pas du VB6 : j'avais réussi à convertir ta 1ère version en .Net, mais il faut faire quelques modif pas évidentes pour ceux qui connaissent pas. Maintenant ta source fonctionne bien, faudra que je réessaie de la convertir, et je te dirais ce qu'il faut changer pour avoir une version VB6 qui se convertie facilement en .Net (et qui marche toujours :-)
patleguillou
Messages postés4Date d'inscriptionsamedi 22 septembre 2007StatutMembreDernière intervention31 juillet 2009 31 juil. 2009 à 16:15
Voici de bonnes questions.
Pour Seven: Ça ressemble à Vista.
Effectivement ca semble être du .net d'ou le soucis.
Je regarde si la portabilité est possible.
Cordialement
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 31 juil. 2009 à 15:41
Bonjour, je n'ai encore pas eu la joie de travailler avec Windows Seven et ne saurais donc te dire d'où proviens le problème.
Cependant, si tu as un niveau minimum en VB6, tu devrais pouvoir supprimer la partie du code qui utilise le contrôle Hierrarchical Flex Grid. Cette grille permet seulement un affichage sommaire. L'ensemble des informations générées par le programmes sont stoquées dans un fichier log (dans le même répertoire que l'application).
question tout a fait personnelle.
"Visual studio 2008 express" est-ce tjs du VB6 ou est-ce du .net ?
Je ne suis pas persuadé que mon code soit portable en .net
Cordialement
patleguillou
Messages postés4Date d'inscriptionsamedi 22 septembre 2007StatutMembreDernière intervention31 juillet 2009 27 juil. 2009 à 10:59
Bonjour,
J'utilise Visual studio 2008 express avec windows 7.
Lorsque je charge le projet, une mise à niveau est lancé j'ai le message suivant :
impossible de charger le composant référencé: MSHFLXGD.OCX
Après une recherche sur google, j'ai trouvé et installé ce composant, mais j'ai toujours le même message.
Avez vous une idée pour réglé ce soucis.
Merci.
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 23 juil. 2009 à 14:14
Bon, on se pause,
Voici la version finale de ce programme.
Normalement plus de bug, plus de do events, des composants correctements nommés. Un code commenté.
Et un Zip OK
^^ Toute remarque sur cette ultime version est la bienvenue
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 juil. 2009 à 11:02
je viens d'uploadé ton zip qui n'était toujours pas correct
++
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 23 juil. 2009 à 09:01
OUI, je vais refaire le zip, sans sous Zip, deplus, je me suis rendu compte que j'ai zappé un fichier important dans la version avec API ^^ toutes mes excuses
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 23 juil. 2009 à 08:23
Le DoEvents ne sert que dans un seul cas : tu fais un calcul très long, et tu dois afficher périodiquement l'avancement dans un contrôle du formulaire en postant des messages : sans DoEvents, les messages ne sont pas traités à temps, avec DoEvents, le système prend le temps d'interrompre le calcul le temps de traiter les derniers messages en attente. Cela sert aussi à gérer un bouton Annuler pendant le long calcul (il suffit d'une simple variable globale pour cela).
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 23 juil. 2009 à 00:26
pourrais-tu refaire un zip correct stp!
la taille a augmenté, on ne peut plis "voir" (files.c-s) le code sans le télécharger si tu le sous-zippe....
merci
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 22 juil. 2009 à 19:01
Ca je sais ... mais je pensais qu'il avait une autre solution.
Et je ne suis pas sûr que ça soit comme des NOP en asm ...
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 22 juil. 2009 à 18:42
Et bien tu ne les remplacent pas ^^
Ils son comme les NOP en assembleur. Sauf que la, le but n'est pas de temporiser mais de laisser souffler l'OS pendant un court instant
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 22 juil. 2009 à 18:39
@Patrice99 : Comment tu remplaces les DoEvents ?
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 22 juil. 2009 à 17:48
J'ai implémenté la version sans api, qui travaille à partir des Exports.
Avantage --> plus de requestes acharnées sur la base de registre
Inconvénient --> Temps de traitement bien bien + long
je laisse les deux versions dans le zip téléchargeable.
je vais me repencher sur la version avec API afin de trouver ce qui cloche (traitement & gestion des valeurs de retour des API)
toute critique est la bienvenue.
PS : pour ma part je préconise l'emploie du DoEvents dans toute boucle. Cela Evite ne ne pas pouvoir reprendre la main sur VB6 ^_^
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 22 juil. 2009 à 14:57
^^ merci de tous ces consils très avisés, je tacherais d'en tenir compte.
j'avais mis des "on error goto err" mais cela n'empechait pas le plantage et la fermeture des processus.
Je suis en trein de refaire le code de A à Z en n'utilisant plus les API. (juste pour le Shell qui atends)
Je compare les Exports et pis c'est tout.
inconvénient, ben c'est plus long à traiter. Mais cela reste raisonnable. Enfin, je posterais quand ce serra terminé.
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 22 juil. 2009 à 13:21
Private Function Lire_CLEE -> Sub et non fct
On Error Resume Next : à bannir !
DoEvents : à éviter voire même à bannir !
Les fct Reg* retourne un Long : cette valeur de retour sert à savoir si succès ou échec :
voir ici : http://msdn.microsoft.com/en-us/library/ms724895(VS.85).aspx et ici www.sysdeco.no/Doc/Langref/default.htm?turl=regopenkey.htm
Il faut toujours vérifier chaque étape avant de passer à la suivante (c'est pour cela que On Error Resume Next est à bannir : ne sert que dans de rare cas)
Tu peux laisser un On Error Goto Erreur au début et afficher à la fin la cause de l'erreur : c'est bien possible que ce soit un dépassement de capacité du à la récursivité combinée avec une erreur.
Dans une fonction récursive, c'est le moment où jamais de s'appliquer à super bien programmer au carré !
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 22 juil. 2009 à 10:33
ReBonjour,
J'ai mis une bonne dose de :
DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents:
DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents:
avant et apres l'instruction RegOpenKey dans Lire_CLEE
et cela réduit la fréquence des bugs ...
Réduit mes ne résouds pas ;)
Il faut dire que les exports prennent tout mon CPU ;)
je continue a chercher.
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 22 juil. 2009 à 10:09
Bonjour PATRICE99,
qu'entends-tu par "fait planter completement VB6" ??
as-tu un message d'erreure. Si oui est-ce "Impossible d'ecrire à l'addresse blablabla" ?
Si c'est cette erreure, en effet elle met fin au processus en entier et donc au debuggueur MsVB6. Même avec un On error goto ou un On error resume next, le problème perssiste.
Sur mon PC ,qui n'a franchement pas de bonnes performances, le problème arrive de temps à autres, et c'est moins fréquent avec l'executable.
Par là j'entends qu'il faut reessayer jusqu'a ce que ça passe ^^
ou alors compiler le programme et l'executer.
J'essaye de trouver l'origine de ce problème mais je n'y parviens pas pour le momment.
Comme je le disais plus haut je pense que cela proviens d'une trop grande fréquence de requestes sur la base de registres.
je vais essayer de blinder de Doevents.
Si en revenche c'était une erreure de pile (mais il le dirait en ces termes normalement) je pourrais recoder la fonction lire_CLE en non autoapelante (qui s'appelle elle même)...
si vous avez des pistes elles sont les bienvenues.
Cordialement,
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 22 juil. 2009 à 09:18
Salut, chez moi la ligne Call Lire_CLEE(Root, "") fait planter completement VB6 : pas moyen de savoir ce qui ce passe : peut être un dépassement de capacité ?
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 21 juil. 2009 à 12:52
ouin, je n'arrive pas a changer l'image du topic ;(
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 21 juil. 2009 à 12:32
^^ a ok, oui, je suis entierrement d'accord avec le fait de nommer les objet en fonction de leurs fonctions ^^
pour ma part je me contente des prefixes genre
B_nom pour un bouton
L_nom pour une liste
C_nom pour une combobox
T_nom pour une textbox
TV_nom pour un treeview ...
mais ce projet etant fait vite fait, je n'ai pas pris la peine de nommer les composants ni de commenter plus que ca, ni d'écrire un code comme il faudrait avec des fonctions bien faites et bien classées ^^
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 20 juil. 2009 à 19:34
Pour l'Option Explicit, je trouve que c'est quand même plus logique de le mettre dans le code, comme ça tu peux développer sur n'importe quelle machine ayant VB6 sans changer la config ...
Pour les objets non nommés, je trouve que c'est plus facile de les nommer en fonction de leur utilité (par exemple le bouton annuler cmdAnnuler, etc.) et de leur ajouter un préfixe en fonction de leur type (txt=textbox, cmd=button, lst=listbox, cmb=combobox, frm=frame/form, pgr=progressbar, lvw=listview, etc.)
Evidemment tu fais ce que tu veux, je propose ça pour la facilité des débutants qui voudront comprendre le code ...
Flocreate
Messages postés300Date d'inscriptionlundi 17 juillet 2006StatutMembreDernière intervention27 mai 20123 20 juil. 2009 à 19:17
En ce qui concerne les fautes d'orthographe, bien, abstention monsieur l'arbitre ^^
En ce qui concerne l'"Option Explicite", j'utilise l'option automatique qui vérifie la déclaration des variables dans VB6.
Mais qu'entends tu par "objets non nommés sur la form ?
il y a juste un combobox "CB"
2 boutons "Command1" et "Command2"
1 label "Label1"
et une liste "L"
Ceci dit, je conviens que l'interface et la présentation du code ne sont pas finalisés ^^
j'ai oublié de préciser dans les commentaires, que les "hh/mm/ss"
sont les heures de modification. N'oubliez pas que ces heures sont en mode GMT, donc en ce moment, il y a 2 heures de décalage.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 20 juil. 2009 à 17:15
Petit détail : on dit une clé (pas de 'e' final) et la dernière ligne de ta description, faute de frappe : 'Toute critiques ou remarques sont les bienvenues ^^ '
Pour parler de ta source, sur le form, il reste des objets non nommés ...
Et dans le code, pour éviter les erreurs introuvables, ajoute 'Option Explicit' en tête de chaque fichier du projet. Commme ça, si tu ne déclares pas une variable, il te le signale et refuse de compiler. Ca peut arriver qu'on se trompe dans un nom de variable et on passe alors une demi-heure pour s'apercevoir qu'on a fait une faute de frappe !
4 août 2009 à 13:02
Patrice99 je serrais ravi de savoir coder un VB6 portable en .net, si tu as des pistes, elles sont les bienvenues. (oui oui oui , je vais commencer par googeliser tout ça, mais le savoir est fait pour être partagé...)
D'ailleurs, Patrice99, si tu as modifié la dernière version de sorte a la rendre compatible avec le .net, je t'invite à me la faire parvenir. Je la mettrait à disposition des VBiens sur ce site ^^
cordialement,
31 juil. 2009 à 16:30
31 juil. 2009 à 16:26
31 juil. 2009 à 16:15
Pour Seven: Ça ressemble à Vista.
Pour visual Studio express, J'ai été sur wikipédia:
http://fr.wikipedia.org/wiki/Visual_Basic_.NET#Les_IDE_.28environnements_de_d.C3.A9veloppements.29
Effectivement ca semble être du .net d'ou le soucis.
Je regarde si la portabilité est possible.
Cordialement
31 juil. 2009 à 15:41
Cependant, si tu as un niveau minimum en VB6, tu devrais pouvoir supprimer la partie du code qui utilise le contrôle Hierrarchical Flex Grid. Cette grille permet seulement un affichage sommaire. L'ensemble des informations générées par le programmes sont stoquées dans un fichier log (dans le même répertoire que l'application).
question tout a fait personnelle.
"Visual studio 2008 express" est-ce tjs du VB6 ou est-ce du .net ?
Je ne suis pas persuadé que mon code soit portable en .net
Cordialement
27 juil. 2009 à 10:59
J'utilise Visual studio 2008 express avec windows 7.
Lorsque je charge le projet, une mise à niveau est lancé j'ai le message suivant :
impossible de charger le composant référencé: MSHFLXGD.OCX
Après une recherche sur google, j'ai trouvé et installé ce composant, mais j'ai toujours le même message.
Avez vous une idée pour réglé ce soucis.
Merci.
23 juil. 2009 à 14:14
Voici la version finale de ce programme.
Normalement plus de bug, plus de do events, des composants correctements nommés. Un code commenté.
Et un Zip OK
^^ Toute remarque sur cette ultime version est la bienvenue
23 juil. 2009 à 11:02
++
23 juil. 2009 à 09:01
23 juil. 2009 à 08:23
23 juil. 2009 à 00:26
la taille a augmenté, on ne peut plis "voir" (files.c-s) le code sans le télécharger si tu le sous-zippe....
merci
22 juil. 2009 à 19:01
Et je ne suis pas sûr que ça soit comme des NOP en asm ...
22 juil. 2009 à 18:42
Ils son comme les NOP en assembleur. Sauf que la, le but n'est pas de temporiser mais de laisser souffler l'OS pendant un court instant
22 juil. 2009 à 18:39
22 juil. 2009 à 17:48
Avantage --> plus de requestes acharnées sur la base de registre
Inconvénient --> Temps de traitement bien bien + long
je laisse les deux versions dans le zip téléchargeable.
je vais me repencher sur la version avec API afin de trouver ce qui cloche (traitement & gestion des valeurs de retour des API)
toute critique est la bienvenue.
PS : pour ma part je préconise l'emploie du DoEvents dans toute boucle. Cela Evite ne ne pas pouvoir reprendre la main sur VB6 ^_^
22 juil. 2009 à 14:57
j'avais mis des "on error goto err" mais cela n'empechait pas le plantage et la fermeture des processus.
Je suis en trein de refaire le code de A à Z en n'utilisant plus les API. (juste pour le Shell qui atends)
Je compare les Exports et pis c'est tout.
inconvénient, ben c'est plus long à traiter. Mais cela reste raisonnable. Enfin, je posterais quand ce serra terminé.
22 juil. 2009 à 13:21
On Error Resume Next : à bannir !
DoEvents : à éviter voire même à bannir !
Les fct Reg* retourne un Long : cette valeur de retour sert à savoir si succès ou échec :
voir ici : http://msdn.microsoft.com/en-us/library/ms724895(VS.85).aspx
et ici www.sysdeco.no/Doc/Langref/default.htm?turl=regopenkey.htm
Il faut toujours vérifier chaque étape avant de passer à la suivante (c'est pour cela que On Error Resume Next est à bannir : ne sert que dans de rare cas)
Tu peux laisser un On Error Goto Erreur au début et afficher à la fin la cause de l'erreur : c'est bien possible que ce soit un dépassement de capacité du à la récursivité combinée avec une erreur.
Dans une fonction récursive, c'est le moment où jamais de s'appliquer à super bien programmer au carré !
22 juil. 2009 à 10:33
J'ai mis une bonne dose de :
DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents:
DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents: DoEvents:
avant et apres l'instruction RegOpenKey dans Lire_CLEE
et cela réduit la fréquence des bugs ...
Réduit mes ne résouds pas ;)
Il faut dire que les exports prennent tout mon CPU ;)
je continue a chercher.
22 juil. 2009 à 10:09
qu'entends-tu par "fait planter completement VB6" ??
as-tu un message d'erreure. Si oui est-ce "Impossible d'ecrire à l'addresse blablabla" ?
Si c'est cette erreure, en effet elle met fin au processus en entier et donc au debuggueur MsVB6. Même avec un On error goto ou un On error resume next, le problème perssiste.
Sur mon PC ,qui n'a franchement pas de bonnes performances, le problème arrive de temps à autres, et c'est moins fréquent avec l'executable.
Par là j'entends qu'il faut reessayer jusqu'a ce que ça passe ^^
ou alors compiler le programme et l'executer.
J'essaye de trouver l'origine de ce problème mais je n'y parviens pas pour le momment.
Comme je le disais plus haut je pense que cela proviens d'une trop grande fréquence de requestes sur la base de registres.
je vais essayer de blinder de Doevents.
Si en revenche c'était une erreure de pile (mais il le dirait en ces termes normalement) je pourrais recoder la fonction lire_CLE en non autoapelante (qui s'appelle elle même)...
si vous avez des pistes elles sont les bienvenues.
Cordialement,
22 juil. 2009 à 09:18
21 juil. 2009 à 12:52
21 juil. 2009 à 12:32
pour ma part je me contente des prefixes genre
B_nom pour un bouton
L_nom pour une liste
C_nom pour une combobox
T_nom pour une textbox
TV_nom pour un treeview ...
mais ce projet etant fait vite fait, je n'ai pas pris la peine de nommer les composants ni de commenter plus que ca, ni d'écrire un code comme il faudrait avec des fonctions bien faites et bien classées ^^
20 juil. 2009 à 19:34
Pour les objets non nommés, je trouve que c'est plus facile de les nommer en fonction de leur utilité (par exemple le bouton annuler cmdAnnuler, etc.) et de leur ajouter un préfixe en fonction de leur type (txt=textbox, cmd=button, lst=listbox, cmb=combobox, frm=frame/form, pgr=progressbar, lvw=listview, etc.)
Evidemment tu fais ce que tu veux, je propose ça pour la facilité des débutants qui voudront comprendre le code ...
20 juil. 2009 à 19:17
En ce qui concerne l'"Option Explicite", j'utilise l'option automatique qui vérifie la déclaration des variables dans VB6.
Mais qu'entends tu par "objets non nommés sur la form ?
il y a juste un combobox "CB"
2 boutons "Command1" et "Command2"
1 label "Label1"
et une liste "L"
Ceci dit, je conviens que l'interface et la présentation du code ne sont pas finalisés ^^
j'ai oublié de préciser dans les commentaires, que les "hh/mm/ss"
sont les heures de modification. N'oubliez pas que ces heures sont en mode GMT, donc en ce moment, il y a 2 heures de décalage.
20 juil. 2009 à 17:15
Pour parler de ta source, sur le form, il reste des objets non nommés ...
Et dans le code, pour éviter les erreurs introuvables, ajoute 'Option Explicit' en tête de chaque fichier du projet. Commme ça, si tu ne déclares pas une variable, il te le signale et refuse de compiler. Ca peut arriver qu'on se trompe dans un nom de variable et on passe alors une demi-heure pour s'apercevoir qu'on a fait une faute de frappe !
Pour le reste, bon programme : 10/10