Bugs resultant d'une migration d'appli de VB6 a VB2005

Résolu
yohbur
Messages postés
21
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
20 mars 2007
- 14 févr. 2007 à 17:44
NHenry
Messages postés
14929
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
- 16 févr. 2007 à 12:30
Bonjour,

Je suis actuellement en train de reprendre une application ecrite en VB6 par un collegue (dans laquelle j'avais deja effectué quelques modifications) pour la migrer en VB2005.

Apres import du projet dans l'envirronnement VB2005, je bloque sur certaines erreurs recurrentes:

------------------------------------------------------------------------------
-1- Probleme sur un ITCReady et l'aide en ligne ne renvoie sur rien

'UPGRADE_WARNING: Impossible de résoudre la propriété par défaut de l'objet ITCReady(False). Cliquez ici : ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'

    Do Until ITCReady(False)

        System.Windows.Forms.Application.DoEvents()
:System.Windows.Forms.Application.DoEvents() :        
System.Windows.Forms.Application.DoEvents() :
System.Windows.Forms.Application.DoEvents()

    Loop

La, je suis dans le flou le plus total
------------------------------------------------------------------------------------
-2- Probleme sur l'utilisation d'un bouton ocx apparement non reconnue

'UPGRADE_NOTE: Enableda été mis à niveau vers CtlEnabled. Cliquez ici : 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'

        Envoyer.Envoyer_Bouton_Options.Ctlset_Enabled(False)

 c'est un bouton issu de l'utilisaion d'un ocx (AxAnyButtons.AxAnyButton), et apparement cette ocs ne semble pas bien reconnu par VB2005.
Je voudrais savoir si je suis obligé de remplacer les boutons utilisant cet ocx, ou si je peux contourner le probleme

De plus, ce message apparait lorsque j'essaye de compiler:
Erreur    2    Impossible de créer l'assembly de wrappers pour la bibliothèque de types "AxReyXpBasics". Une exception de type 'Microsoft.Build.Tasks.ComReferenceResolutionException' a été levée.    D:\Logicel Echange-reprise VB Net\Projet_Echange_Version_3.NET\AxReyXpBasics    Echange 30
----------------------------------------------------------------------------------------
-3- Probleme sur un Execute

La ligne de code en question est:
Envoyer_Inet.Execute( , "DIR")

Il m'annonce un probleme de surcharge d'arguments, pourtant j'utilise bien mes 2 arguments (un a vide et l'autre la chaine "DIR")
--------------------------------------------------------------------------------------------
-4- Probleme sur un Goto

Erreur    29    'GoTo Envoyer_Suite_Erreur' n'est pas valide, car 'Envoyer_Suite_Erreur' se trouve à l'intérieur d'une instruction 'For' ou 'For Each' qui ne contient pas cette instruction.    D:\Logicel Echange-reprise VB Net\Projet_Echange_Version_3.NET\Form_envoyer.vb    1343    8    Echange 30

 et pourtant, l'etiquette est bien dans le For Each
----------------------------------------------------------------------------------------------

Si quelqu'un a des pistes de reponses, merci d'avance.

3 réponses

NHenry
Messages postés
14929
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
162
15 févr. 2007 à 13:18
Bonjour


1) c'est quoi ITCReady ?


3) Quand tu as un paramètre optionnel en VB2k5, tu peux l'oublier, mais
si tu utilise d'autre paramètres après, il faut lui donner une valeur.

 Si tu as par exemple

Sub Test(Optional byval param1 as strint="Essai1",optional byval param2 as integer=2)


Tu peux faire

Test("fldsjfk")

Test("ee",5)

mais pas

Test(,6)


Pour cela je te conseil d'utiliser les surcharges :

Tu peux déclarer 2 sub :


Sub Test(Optional byval param1 as strint="Essai1",optional byval param2 as integer=2)

    'Un truc

End Sub

et

Sub Test(byval param2 as integer)

    Test("Essai1",param2)

End Sub


4) GOTO, EST A BANNIR DES CODES VB.NET;


Si ta boucle est de la forme


Etiquette: For i=0 to 5

    If ... Then GOTO Etiquette

    ...

Next


Préfère

For i=0 to 5


    If ... Then Continue For


    ...


Next

Il est plus facile de batiser quelqu'un que de la convertir.(surtout en programmation)
VB (6, A excel, .NET), C++, C#.Net
Mon site
3
NHenry
Messages postés
14929
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
162
16 févr. 2007 à 12:30
Bonjour


REM :

Dans ton code :

Do Until ITCReady(False)

       
System.Windows.Forms.Application.DoEvents()
:System.Windows.Forms.Application.DoEvents() :        
            System.Windows.Forms.Application.DoEvents() :
System.Windows.Forms.Application.DoEvents()

Loop


Préfère

Do Until ITCReady(False)

       System.Windows.Forms.Application.DoEvents()

       System.Threading.Thread.Sleep(0)

Loop

Il est plus facile de batiser quelqu'un que de la convertir.(surtout en programmation)
VB (6, A excel, .NET), C++, C#.Net
Mon site
3
yohbur
Messages postés
21
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
20 mars 2007

15 févr. 2007 à 18:22
Alors, merci beaucoup pour cette reponse.

Effectivement, via le continue, je shunt les Goto du code (quel bonheur!!!).

Pour la surcharge, ca m'indique la voix, mais je n'ai pas eu le temps de tester encore.

pour le ITCReady, c'est une fonction du code que j'appelle pour tester si la connexion est libre ou pas. Elle est déclaré avec un parametre booleen passé en Byref.

Pour le probleme lié a un ocx, je viens de m'apercevoir que la version presente sur ma machine est estampillé VB6, donc avec un changement de version, ca devrait passé.

Je finalise si tout est bon demain, et merci encore.
0