Ponteur en vb.net

Résolu
ltisoft Messages postés 3 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 10 juin 2010 - 3 juin 2010 à 10:15
kbalist Messages postés 36 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 6 février 2011 - 12 juin 2010 à 10:15
Bonjour

je code en vb sous studio 2010 evaluation.
je n'arrive pas a déclarer les variables de cette fonction activeX.

Public Overridable Sub ImageGet(ByRef pBuffer As Byte, ByVal ulMaxSize As UInteger, ByRef pulGetSize As UInteger)

en c++ ça donne:
unsigned char *buf = new unsigned cha[1024*1024];
if( buf )
{
unsigned long bufsize = -1;
m_CamCtrl.ImageGet( buf, 1024*1024, &bufsize );
.......
......
}

merci d'avance
polux

3 réponses

MiharbiDoNo Messages postés 150 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 25 mai 2012
8 juin 2010 à 02:54
VB.Net Ne Supporte Pas Les Pointeurs. Il Faut Utiliser Un Garbage Collector Hanlde (GCHandle), et tu fait l'allocation de ton object. tu fait un pin, utilise l'adresse de l'object, puis FREE LE GChandle. Je ne Suis pas totalemnt sur, mais je crois que ça doit marcher.
3
ltisoft Messages postés 3 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 10 juin 2010
10 juin 2010 à 17:25
Merci pour ta reponse mais avec le niveau que j'ai en vb.net je ne comprends pas tout.
je veux juste declarer en vb.net l'equivalent de cette declaraton en c++:
unsigned char *buf = new unsigned char[1024*1024];

j'ai essayé avec intptr mais rien n'y fait ,je n'arrive pas à passer le pointeur à la fonction imageget(byref pbuffer as byte,ByVal ulMaxSize As UInteger, ByRef pulGetSize As UInteger)

re merci d'avance

polux
0
kbalist Messages postés 36 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 6 février 2011
12 juin 2010 à 10:15
ta définition de fonction me parait bizarre...
pbuffer est un pointeur sur un octet ou sur un buffer d'octets ?

dans ce dernier cas, tu peux essayer :
ByRef pBuffer As Array dans ta fonction
ou bien
ByRef pBuffer As Object

ou bien encore
ByVal pBuffer As IntPtr
0
Rejoignez-nous