Problème de migrationt VB6 vers VB.NET

fg85 Messages postés 370 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 13 avril 2007 - 24 juin 2006 à 19:01
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 24 juin 2006 à 20:43
Bonjour tout le monde,

Je dev pas mal en VB6 mais là j'ai besoin de faire une migration vers VB.NET, et je dois avouer avoir quelques problèmes .

Voici les lignes qu'il n'accepte pas en VB.NET :

Private Type COPYDATASTRUCT
 dwData As Long
 cbData As Long
 lpData As Long
End Type

[...]
Dim udtData As COPYDATASTRUCT
[...]
Abs(r_bshow)
[...]
udtData.lpData = StrPtr(sBuffer)
udtData.cbData = LenB(sBuffer)
[...]
VarPtr(udtData)

Voila donc si vous connaissez l'équivalent des différentes fonctions en VB.NET et aussi de "COPYDATASTRUCT" je vous en serai grandement reconnaissant.

Merci à mon sauveur !

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 juin 2006 à 20:23
Salut
Pour le StrPtr et VarPtr : En effet, .Net ne l'accepte pas (impossible il me semble).
Sans avoir essayé, je pense que :
- Pour ta structure Type : Essaye en changeant le nom de la Structure (des fois que mot réservé).
- LenB : N'existe plus en .Net car toutes les chaines (String) sont en Unicode. Donc Len suffit
- Abs : Math.Abs(maVar)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 juin 2006 à 20:42
La déclaration des structure en .NET a changer. Désormais il faut utiliser le mot clé Structure, et indiqué un modificateur d'accès (Public, Private, Friend, ou Dim) pour chaque variable de la structure :

Private Structure COPYDATASTRUCT
    Public dwData As Long
    Public cbData As Long
    Public lpData As Long
End Structure

 La fonction LenB n'est plus prise en charge en .net. Elle servait à retourner le nombre d'octets d'une chaine contrairement à Len qui retournait le nombre de caractères. En .net il faut utiliser la fonction Len qui retourne le nombre de caractères de la chaine, sachant qu'en .net, toutes les chaines sont au format Unicode, donc 2 octets par caractères.

La fonction Abs est devenue en .net, une méthode de la classe Math, et s'utilise ainsi :  résultat=Math.Abs(r_bshow)

Les fonctions VarPtr et StrPtr ne sont plus maintenues en .net. Elles n'ont pas de remplaçantes Les fonctionnalités de .net permettent normalement de n'avoir plus besoin d'utiliser ces fonctions. Il faut que tu revois et modifie ton code pour faire autrement ce qui t'ammenais à utiliser ces fonctions.

<hr /># Le partage est notre force #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 juin 2006 à 20:43
Dommage, pas assez rapide

<hr /># Le partage est notre force #
0
Rejoignez-nous