Problème vb6

Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 - 31 mars 2010 à 15:51
lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012 - 28 avril 2010 à 15:56
bonjour

je suis entrain de développer une application en vb6 mais j'ai un petit problème: quand j'exécute mon code dans le débugger de vb6 tout fonctionne bien mais si j'ai une erreur dans mon code sa m'affiche la ligne d'erreur et vb se plante et je peut plus rien faire a part killer le processus avec la gestionnaire des taches j'ai pas compris pour quoi
j'ai désinstallé vb6 puis le réinstallé mais le problème persiste alors j'ai pris le code et je l'ai exécuter dans un autres ordinateur et j'ai toujours le même problème. Donc le problème vient de mon code je crois, y a t-il une mauvaise manipulation ou code qui plante vb6 ?

merci d'avance.




Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)

7 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 mars 2010 à 17:53
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
31 mars 2010 à 18:21
j'ai mal posté ? ou j'ai fait quelque chose d'interdit


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 mars 2010 à 20:05
problème mal expliqué pour commencer oui : tu ne l'exécutes pas dans le debugguer (ou alors ligne par ligne mais j'en doute) mais dans l'IDE

tu as tout réinstallé, sans même voir si d'autres projets posaient le même problème? en tout cas on en sait rien

et puisque oui, çà vient forcément de ton code, à part te dire "oui çà vient d'au moins une ligne de ton code", on ne peut rien

on a pas ton code! donc quelle ligne? quoi? qu'est-ce?...

enfin tu demandes si ton code peut planter VB (donc l'IDE) alors que tu dis qu'il fonctionne en IDE (debuggeur...) mais pas en compilé
donc comment le compilé pourrait planter l'IDE qui, à ce moment, n'est même pas ouvert


si ta question n'est pas "mal postée", elle est très "mal posée"

(tout se speech était aussi bien remplacé par l'image non? )
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
2 avril 2010 à 15:39
salut
mon code est très long il dépasse les 1000 lignes c'est pour sa que je peut pas le mettre ici... avant il fonctionnait sans problème puis maintenant quand il y a une erreur sa plante directement: exemple d'erreur: une liste qui contient 0 item et je fait "list.additem "test",2" sa m'affiche une erreur, index hors limite et la vb plante totalement, le problème c'est que seule ce projet plante

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
2 avril 2010 à 22:40
TA QUESTION
mon code est très long il dépasse les 1000 lignes c'est pour sa que je peut pas le mettre ici...avant il fonctionnait sans problème
puis maintenant quand il y a une erreur sa plante directement
exemple d'erreur: une liste qui contient 0 item et je fait "list.additem "test",2" sa m'affiche une erreur, index hors limite et la vb plante totalement


MES OBSERVATIONS

Tu ne précises pas avant quelle manipulation ca fonctionnait
Tu ne precises pas de quel type d erreur il sagit : est elle retournée avec un message d erreur plein ecran etc..

Toutefois avec VB6 une facon elementaire de proceder avec prudence est
1)de declarer Explicitement tes variables (Option Explicit en debut de module avant tte declaration)
2)de restreindre au besoin dans la declaration des variavles les types de données (String, Long, etc)
3)d autoriser dans la fenetre d environnement de ton projet le traitement des erreurs
4)d inserer un gestionnaire d erreurs à chacune des etapes de ton code dont le traitement est incertain
on error resume next(on ignore lerreur)
on error goto erroretiquette
d inserer en fin de paquet de code de ta procedure cette etiquette (erreoretiquette:)
de la faire suivre de ton code de traitement de l erreur (recupererles proriete de l erreur :err.description etc et traiter l erreur)
de supprimer la derniere erreur de la pile (err.clear)
de traiter le retour au code appelant
5) inserer une instruction de fin de traitement d erreur en aval à l endroit adequate (on error goto 0)

MA REPONSE

pour répondre a ta question sur le comportement de cette ListBox
tu as probablement chargé
Library VBA C:\WINDOWS\System32\msvbvm60.dll Visual Basic For Applications
qui t apporte Class ErrObject Membre de VBA
Library VBRUN C:\WINDOWS\System32\msvbvm60.dll\3 Objets et procédures d'exécution Visual Basic
Library VB C:\Program Files\Microsoft Visual Studio\VB98\VB6.OLB Procédures et objets Visual Basicou ComboBox ou une ligne à un contrôle Grid
qui t apporte Class ListBox Membre de VB Affiche une liste d'éléments à partir de laquelle l'utilisateur peut effectuer une sélection simple ou multiple.
Sub Clear() Membre de VB.ListBox Efface le contenu d'un contrôle ou du Presse-papiers système.
Sub AddItem(Item As String, [Index]) Membre de VB.ListBox Ajoute un élément à un contrôle ListBox.

tu dois definir correctement MyItem(String) et MyIndex(facultatif,integer,De 0 à IntegerMax)
tu dois inserer une routine de traitement de l erreur
tu dois prevoir d interrompre cette routine(sera declenchée pour toute erreur suivant sa declaration..) dès qu elle n est plus nescessaire -(on error goto 0 ou resume next)

'' tu renseignes l erreur (pour traitement ulterieur)
ton code
on error goto MyListboxAdditemERROR
MyListbox.Additem MyItem,MyIndex ' ton code
ton code
exit Sub (ou Exit Function)
'
MyListboxAdditemERROR :
msgbox "Erreur MyListbox.Additem " & (item " & MyItem & ", Index " & MyIndex & vbcrlf & _
err.num & " " & err.description & " " & err.source ' etc
resume next ' reprend le traitement a l instruction qui suit celle ayant provoqué l erreur

'' tu corrige l erreur s
debut de ton code
on error goto MyListboxAdditemERROR
MyListbox.Additem MyItem,MyIndex ' ton code
fin de ton code
exit Sub (ou Exit Function) ' forcer la sortiede la procedure , a defaut le gestionnaire d erreur sera executé a la ligne suivante
MyListboxAdditemERROR :
'code de correction du code ayant provoqué l erreur ( avec une listbox : verifier le type de donnée des deux parametres et
' la compatibilite de MyIndex avec la priopriet Sorted de la ListBox)
'si MyItem et MyIndex sont publics
Myitem= ........ string ' parametre corrigé
MyIndex= ..... entier ' parametre corrigé
resume 0 ' reprend le traitement de l instruction ayant provoqué l erreur
'si MyItem et/ou MyIndex sont locales
Myitem= ........ string ' parametre corrigé
MyIndex= ..... entier ' parametre corrigé
MyListbox.Additem MyItem,MyIndex
resume next ' reprend le traitement a l instruction qui suit celle ayant provoqué l erreur

'' tu ignores l erreur
ton code
on error resume next ' si une erreur est generée , ignore le code et passae a l instruction suivante
MyListbox.Additem MyItem,MyIndex
ton code

0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
3 avril 2010 à 12:09
merci d'avoir pris le temps de lire et répondre à ma question.

mon problème n'est pas avec la liste mais avec n'importe quel erreur.
j'utilise option explicit, je déclare tout mes variables...
juste pour éviter que sa plante je dois tout simplement ajouter une gestionnaire d'erreur pour chaque procédure incertaine comme tu me la suggérer, comme sa j'ai plus d'erreur et donc sa plante pas. ce que je cherchais au début c'est de savoir s'il y a un bogue connu sous vb6 ou quelque chose comme sa.

merci encore


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012
28 avril 2010 à 15:56
hi
j'ai trouvé le problème, j'avais déclarer mes variable (plus que 200 variables) sans préciser leur type (diam a ,b,c...)
donc automatiquement ils prennent le type variant(le type qui consomme le plus de mémoire).
j'ai déclarer mes variable en précisant le type et là j'ai plus le problème.
merci pour votre aide
0
Rejoignez-nous