J'utilise une fonction API qui me renvoie un pointeur (de type Long)
sur une variable dont le type est personnalisé. Comment puis-je
utiliser ce pointeur pour lire une variable du même type ?
Par exemple:
Public type MonType
Var1 as integer
Var 2 as long
...
End Type
Public Dim MaVariable as MonType
Public Dim MonPointeur as Long
Declare MonAPI ...
MonPointeur=MonAPI(0)
Je souhaite ensuite lire le contenu de la variable de type MonType
que la fonction API a rempli.
J'utilise une fonction API qui me renvoie un pointeur (de type Long)
sur une variable dont le type est personnalisé. Comment puis-je
utiliser ce pointeur pour lire une variable du même type ?
Par exemple:
Public type MonType
Var1 as integer
Var 2 as long
...
End Type
Public Dim MaVariable as MonType
Public Dim MonPointeur as Long
Declare MonAPI ...
MonPointeur=MonAPI(0)
Je souhaite ensuite lire le contenu de la variable de type MonType
que la fonction API a rempli.
J'utilise une fonction API qui me renvoie un pointeur (de type Long)
sur une variable dont le type est personnalisé. Comment puis-je
utiliser ce pointeur pour lire une variable du même type ?
Par exemple:
Public type MonType
Var1 as integer
Var 2 as long
...
End Type
Public Dim MaVariable as MonType
Public Dim MonPointeur as Long
Declare MonAPI ...
MonPointeur=MonAPI(0)
Je souhaite ensuite lire le contenu de la variable de type MonType
que la fonction API a rempli.
Hello,
Pourquoi ne pas passer la structure à l'API directement?
Declare MaFonction ...(..., MonParam As MonType, ...) ...
ou encore
Declare MaFonction ...(..., MonParam As Any, ...) ...
MaFonction (..., MaVariableMonType, ...)...
De cette manière, VB se charge de tout...
Sinon, il est possible d'utiliser l'API copymemory et remplir la
mais il est toujours préférable de se asser de ce genre d'appels...
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Archives" a écrit dans le message de
news:ca4qua$ttd$
> J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> sur une variable dont le type est personnalisé. Comment puis-je
> utiliser ce pointeur pour lire une variable du même type ?
>
> Par exemple:
>
> Public type MonType
> Var1 as integer
> Var 2 as long
> ...
> End Type
>
> Public Dim MaVariable as MonType
> Public Dim MonPointeur as Long
> Declare MonAPI ...
>
> MonPointeur=MonAPI(0)
>
> Je souhaite ensuite lire le contenu de la variable de type MonType
> que la fonction API a rempli.
Hello,
Pourquoi ne pas passer la structure à l'API directement?
Declare MaFonction ...(..., MonParam As MonType, ...) ...
ou encore
Declare MaFonction ...(..., MonParam As Any, ...) ...
MaFonction (..., MaVariableMonType, ...)...
De cette manière, VB se charge de tout...
Sinon, il est possible d'utiliser l'API copymemory et remplir la
mais il est toujours préférable de se asser de ce genre d'appels...
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Archives" <musicalesNOSPAM@mp3th.net> a écrit dans le message de
news:ca4qua$ttd$1@news-reader4.wanadoo.fr
> J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> sur une variable dont le type est personnalisé. Comment puis-je
> utiliser ce pointeur pour lire une variable du même type ?
>
> Par exemple:
>
> Public type MonType
> Var1 as integer
> Var 2 as long
> ...
> End Type
>
> Public Dim MaVariable as MonType
> Public Dim MonPointeur as Long
> Declare MonAPI ...
>
> MonPointeur=MonAPI(0)
>
> Je souhaite ensuite lire le contenu de la variable de type MonType
> que la fonction API a rempli.
Hello,
Pourquoi ne pas passer la structure à l'API directement?
Declare MaFonction ...(..., MonParam As MonType, ...) ...
ou encore
Declare MaFonction ...(..., MonParam As Any, ...) ...
MaFonction (..., MaVariableMonType, ...)...
De cette manière, VB se charge de tout...
Sinon, il est possible d'utiliser l'API copymemory et remplir la
mais il est toujours préférable de se asser de ce genre d'appels...
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Archives" a écrit dans le message de
news:ca4qua$ttd$
> J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> sur une variable dont le type est personnalisé. Comment puis-je
> utiliser ce pointeur pour lire une variable du même type ?
>
> Par exemple:
>
> Public type MonType
> Var1 as integer
> Var 2 as long
> ...
> End Type
>
> Public Dim MaVariable as MonType
> Public Dim MonPointeur as Long
> Declare MonAPI ...
>
> MonPointeur=MonAPI(0)
>
> Je souhaite ensuite lire le contenu de la variable de type MonType
> que la fonction API a rempli.
Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction API,
c'est une fonction fournie par MySQL. Je ne peux donc pas modifier la
déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as Long) as
long
"François Picalausa" a écrit dans le message de
> Hello,
>
> Pourquoi ne pas passer la structure à l'API directement?
> Declare MaFonction ...(..., MonParam As MonType, ...) ...
> ou encore
> Declare MaFonction ...(..., MonParam As Any, ...) ...
> MaFonction (..., MaVariableMonType, ...)...
>
> De cette manière, VB se charge de tout...
> Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure,
> mais il est toujours préférable de se asser de ce genre d'appels...
>
> --
> François Picalausa (MVP VB)
> http://faq.vb.free.fr --- http://msdn.microsoft.com
> http://apisvb.europe.webmatrixhosting.net
>
> "Archives" a écrit dans le message de
> news:ca4qua$ttd$
> > J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> > sur une variable dont le type est personnalisé. Comment puis-je
> > utiliser ce pointeur pour lire une variable du même type ?
> >
> > Par exemple:
> >
> > Public type MonType
> > Var1 as integer
> > Var 2 as long
> > ...
> > End Type
> >
> > Public Dim MaVariable as MonType
> > Public Dim MonPointeur as Long
> > Declare MonAPI ...
> >
> > MonPointeur=MonAPI(0)
> >
> > Je souhaite ensuite lire le contenu de la variable de type MonType
> > que la fonction API a rempli.
>
>
Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction API,
c'est une fonction fournie par MySQL. Je ne peux donc pas modifier la
déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as Long) as
long
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
ekh0OpXTEHA.1232@TK2MSFTNGP09.phx.gbl...
> Hello,
>
> Pourquoi ne pas passer la structure à l'API directement?
> Declare MaFonction ...(..., MonParam As MonType, ...) ...
> ou encore
> Declare MaFonction ...(..., MonParam As Any, ...) ...
> MaFonction (..., MaVariableMonType, ...)...
>
> De cette manière, VB se charge de tout...
> Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure,
> mais il est toujours préférable de se asser de ce genre d'appels...
>
> --
> François Picalausa (MVP VB)
> http://faq.vb.free.fr --- http://msdn.microsoft.com
> http://apisvb.europe.webmatrixhosting.net
>
> "Archives" <musicalesNOSPAM@mp3th.net> a écrit dans le message de
> news:ca4qua$ttd$1@news-reader4.wanadoo.fr
> > J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> > sur une variable dont le type est personnalisé. Comment puis-je
> > utiliser ce pointeur pour lire une variable du même type ?
> >
> > Par exemple:
> >
> > Public type MonType
> > Var1 as integer
> > Var 2 as long
> > ...
> > End Type
> >
> > Public Dim MaVariable as MonType
> > Public Dim MonPointeur as Long
> > Declare MonAPI ...
> >
> > MonPointeur=MonAPI(0)
> >
> > Je souhaite ensuite lire le contenu de la variable de type MonType
> > que la fonction API a rempli.
>
>
Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction API,
c'est une fonction fournie par MySQL. Je ne peux donc pas modifier la
déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as Long) as
long
"François Picalausa" a écrit dans le message de
> Hello,
>
> Pourquoi ne pas passer la structure à l'API directement?
> Declare MaFonction ...(..., MonParam As MonType, ...) ...
> ou encore
> Declare MaFonction ...(..., MonParam As Any, ...) ...
> MaFonction (..., MaVariableMonType, ...)...
>
> De cette manière, VB se charge de tout...
> Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure,
> mais il est toujours préférable de se asser de ce genre d'appels...
>
> --
> François Picalausa (MVP VB)
> http://faq.vb.free.fr --- http://msdn.microsoft.com
> http://apisvb.europe.webmatrixhosting.net
>
> "Archives" a écrit dans le message de
> news:ca4qua$ttd$
> > J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> > sur une variable dont le type est personnalisé. Comment puis-je
> > utiliser ce pointeur pour lire une variable du même type ?
> >
> > Par exemple:
> >
> > Public type MonType
> > Var1 as integer
> > Var 2 as long
> > ...
> > End Type
> >
> > Public Dim MaVariable as MonType
> > Public Dim MonPointeur as Long
> > Declare MonAPI ...
> >
> > MonPointeur=MonAPI(0)
> >
> > Je souhaite ensuite lire le contenu de la variable de type MonType
> > que la fonction API a rempli.
>
>
François dis moi pourquoi cet appel est-il déconseillé ?
Bonjour,
tu connais l'adresse de la structure et sa taille par un integer + 1
long, 2+4 octet
sous reserve que tu ais déclarer ta structure comme dans la dll.
tu peux utiliser copymemory et remplir la structure.
François dis moi pourquoi cet appel est-il déconseillé ?
D'une manière générale c'est assez mal foutu, car c'est plutôt à
l'API de charger la structure qu'on lui passe (comme indiqué dans le
prem. msg de François).
Christophe Vergon
"Archives" a écrit dans le message de
news: ca4tbm$q6a$Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction
API, c'est une fonction fournie par MySQL. Je ne peux donc pas
modifier la déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as
Long) as long
"François Picalausa" a écrit dans le message
de news:Hello,
Pourquoi ne pas passer la structure à l'API directement?
Declare MaFonction ...(..., MonParam As MonType, ...) ...
ou encore
Declare MaFonction ...(..., MonParam As Any, ...) ...
MaFonction (..., MaVariableMonType, ...)...
De cette manière, VB se charge de tout...
Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure, mais il est toujours préférable de se asser de ce genre
d'appels...
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Archives" a écrit dans le message de
news:ca4qua$ttd$J'utilise une fonction API qui me renvoie un pointeur (de type
Long) sur une variable dont le type est personnalisé. Comment
puis-je utiliser ce pointeur pour lire une variable du même type ?
Par exemple:
Public type MonType
Var1 as integer
Var 2 as long
...
End Type
Public Dim MaVariable as MonType
Public Dim MonPointeur as Long
Declare MonAPI ...
MonPointeur=MonAPI(0)
Je souhaite ensuite lire le contenu de la variable de type MonType
que la fonction API a rempli.
François dis moi pourquoi cet appel est-il déconseillé ?
Bonjour,
tu connais l'adresse de la structure et sa taille par un integer + 1
long, 2+4 octet
sous reserve que tu ais déclarer ta structure comme dans la dll.
tu peux utiliser copymemory et remplir la structure.
François dis moi pourquoi cet appel est-il déconseillé ?
D'une manière générale c'est assez mal foutu, car c'est plutôt à
l'API de charger la structure qu'on lui passe (comme indiqué dans le
prem. msg de François).
Christophe Vergon
"Archives" <musicalesNOSPAM@mp3th.net> a écrit dans le message de
news: ca4tbm$q6a$1@news-reader3.wanadoo.fr...
Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction
API, c'est une fonction fournie par MySQL. Je ne peux donc pas
modifier la déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as
Long) as long
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message
de news: ekh0OpXTEHA.1232@TK2MSFTNGP09.phx.gbl...
Hello,
Pourquoi ne pas passer la structure à l'API directement?
Declare MaFonction ...(..., MonParam As MonType, ...) ...
ou encore
Declare MaFonction ...(..., MonParam As Any, ...) ...
MaFonction (..., MaVariableMonType, ...)...
De cette manière, VB se charge de tout...
Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure, mais il est toujours préférable de se asser de ce genre
d'appels...
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Archives" <musicalesNOSPAM@mp3th.net> a écrit dans le message de
news:ca4qua$ttd$1@news-reader4.wanadoo.fr
J'utilise une fonction API qui me renvoie un pointeur (de type
Long) sur une variable dont le type est personnalisé. Comment
puis-je utiliser ce pointeur pour lire une variable du même type ?
Par exemple:
Public type MonType
Var1 as integer
Var 2 as long
...
End Type
Public Dim MaVariable as MonType
Public Dim MonPointeur as Long
Declare MonAPI ...
MonPointeur=MonAPI(0)
Je souhaite ensuite lire le contenu de la variable de type MonType
que la fonction API a rempli.
François dis moi pourquoi cet appel est-il déconseillé ?
Bonjour,
tu connais l'adresse de la structure et sa taille par un integer + 1
long, 2+4 octet
sous reserve que tu ais déclarer ta structure comme dans la dll.
tu peux utiliser copymemory et remplir la structure.
François dis moi pourquoi cet appel est-il déconseillé ?
D'une manière générale c'est assez mal foutu, car c'est plutôt à
l'API de charger la structure qu'on lui passe (comme indiqué dans le
prem. msg de François).
Christophe Vergon
"Archives" a écrit dans le message de
news: ca4tbm$q6a$Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction
API, c'est une fonction fournie par MySQL. Je ne peux donc pas
modifier la déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as
Long) as long
"François Picalausa" a écrit dans le message
de news:Hello,
Pourquoi ne pas passer la structure à l'API directement?
Declare MaFonction ...(..., MonParam As MonType, ...) ...
ou encore
Declare MaFonction ...(..., MonParam As Any, ...) ...
MaFonction (..., MaVariableMonType, ...)...
De cette manière, VB se charge de tout...
Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure, mais il est toujours préférable de se asser de ce genre
d'appels...
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"Archives" a écrit dans le message de
news:ca4qua$ttd$J'utilise une fonction API qui me renvoie un pointeur (de type
Long) sur une variable dont le type est personnalisé. Comment
puis-je utiliser ce pointeur pour lire une variable du même type ?
Par exemple:
Public type MonType
Var1 as integer
Var 2 as long
...
End Type
Public Dim MaVariable as MonType
Public Dim MonPointeur as Long
Declare MonAPI ...
MonPointeur=MonAPI(0)
Je souhaite ensuite lire le contenu de la variable de type MonType
que la fonction API a rempli.
Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction API,
c'est une fonction fournie par MySQL. Je ne peux donc pas modifier la
déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as Long) as
long
"François Picalausa" a écrit dans le message de
> Hello,
>
> Pourquoi ne pas passer la structure à l'API directement?
> Declare MaFonction ...(..., MonParam As MonType, ...) ...
> ou encore
> Declare MaFonction ...(..., MonParam As Any, ...) ...
> MaFonction (..., MaVariableMonType, ...)...
>
> De cette manière, VB se charge de tout...
> Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure,
> mais il est toujours préférable de se asser de ce genre d'appels...
>
> --
> François Picalausa (MVP VB)
> http://faq.vb.free.fr --- http://msdn.microsoft.com
> http://apisvb.europe.webmatrixhosting.net
>
> "Archives" a écrit dans le message de
> news:ca4qua$ttd$
> > J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> > sur une variable dont le type est personnalisé. Comment puis-je
> > utiliser ce pointeur pour lire une variable du même type ?
> >
> > Par exemple:
> >
> > Public type MonType
> > Var1 as integer
> > Var 2 as long
> > ...
> > End Type
> >
> > Public Dim MaVariable as MonType
> > Public Dim MonPointeur as Long
> > Declare MonAPI ...
> >
> > MonPointeur=MonAPI(0)
> >
> > Je souhaite ensuite lire le contenu de la variable de type MonType
> > que la fonction API a rempli.
>
>
Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction API,
c'est une fonction fournie par MySQL. Je ne peux donc pas modifier la
déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as Long) as
long
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
ekh0OpXTEHA.1232@TK2MSFTNGP09.phx.gbl...
> Hello,
>
> Pourquoi ne pas passer la structure à l'API directement?
> Declare MaFonction ...(..., MonParam As MonType, ...) ...
> ou encore
> Declare MaFonction ...(..., MonParam As Any, ...) ...
> MaFonction (..., MaVariableMonType, ...)...
>
> De cette manière, VB se charge de tout...
> Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure,
> mais il est toujours préférable de se asser de ce genre d'appels...
>
> --
> François Picalausa (MVP VB)
> http://faq.vb.free.fr --- http://msdn.microsoft.com
> http://apisvb.europe.webmatrixhosting.net
>
> "Archives" <musicalesNOSPAM@mp3th.net> a écrit dans le message de
> news:ca4qua$ttd$1@news-reader4.wanadoo.fr
> > J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> > sur une variable dont le type est personnalisé. Comment puis-je
> > utiliser ce pointeur pour lire une variable du même type ?
> >
> > Par exemple:
> >
> > Public type MonType
> > Var1 as integer
> > Var 2 as long
> > ...
> > End Type
> >
> > Public Dim MaVariable as MonType
> > Public Dim MonPointeur as Long
> > Declare MonAPI ...
> >
> > MonPointeur=MonAPI(0)
> >
> > Je souhaite ensuite lire le contenu de la variable de type MonType
> > que la fonction API a rempli.
>
>
Pardonnez moi, j'ai du mal m'expliquer. Je n'ai pas créé la fonction API,
c'est une fonction fournie par MySQL. Je ne peux donc pas modifier la
déclaration qui est de la forme:
Declare Function mysql_init Lib "libmysql.dll" (byval pMySQL as Long) as
long
"François Picalausa" a écrit dans le message de
> Hello,
>
> Pourquoi ne pas passer la structure à l'API directement?
> Declare MaFonction ...(..., MonParam As MonType, ...) ...
> ou encore
> Declare MaFonction ...(..., MonParam As Any, ...) ...
> MaFonction (..., MaVariableMonType, ...)...
>
> De cette manière, VB se charge de tout...
> Sinon, il est possible d'utiliser l'API copymemory et remplir la
structure,
> mais il est toujours préférable de se asser de ce genre d'appels...
>
> --
> François Picalausa (MVP VB)
> http://faq.vb.free.fr --- http://msdn.microsoft.com
> http://apisvb.europe.webmatrixhosting.net
>
> "Archives" a écrit dans le message de
> news:ca4qua$ttd$
> > J'utilise une fonction API qui me renvoie un pointeur (de type Long)
> > sur une variable dont le type est personnalisé. Comment puis-je
> > utiliser ce pointeur pour lire une variable du même type ?
> >
> > Par exemple:
> >
> > Public type MonType
> > Var1 as integer
> > Var 2 as long
> > ...
> > End Type
> >
> > Public Dim MaVariable as MonType
> > Public Dim MonPointeur as Long
> > Declare MonAPI ...
> >
> > MonPointeur=MonAPI(0)
> >
> > Je souhaite ensuite lire le contenu de la variable de type MonType
> > que la fonction API a rempli.
>
>
> François dis moi pourquoi cet appel est-il déconseillé ?
Je sais, je suis pas Francois, mais je ne vois pas en quoi cela serait
déconseillé...
> François dis moi pourquoi cet appel est-il déconseillé ?
Je sais, je suis pas Francois, mais je ne vois pas en quoi cela serait
déconseillé...
> François dis moi pourquoi cet appel est-il déconseillé ?
Je sais, je suis pas Francois, mais je ne vois pas en quoi cela serait
déconseillé...
si j'ai bien compris, voici une façon de faire..
<non testé>
'***
Option Explicit
Private type MonType
Var1 as integer
Var 2 as long
...
End Type
Private Declare Function mysql_init _
Lib "libmysql.dll" _
( _
byval pMySQL as Long _
) as long
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByRef pDst As Any, _
ByRef pSrc As Any, _
ByVal ByteLen As Long _
)
Private Sub Main()
Dim t as MonType
Call CopyMemory(t, ByVal mysql_init(0), LenB(t))
End Sub
'***
il est aussi possible comme l'a mentionnée François de jouer avec les
paramètres de CopyMemory afin de modifier sa méthode d'utilisation, en
quelques exemples :
'***
' signature typée
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByRef pDst As MonType, _
ByVal pSrc As Long, _
ByVal ByteLen As Long _
)
'...
Call CopyMemory(t, mysql_init(0), LenB(t))
'***
'***
' pointeurs seulement..
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByVal pDst As Long, _
ByVal pSrc As Long, _
ByVal ByteLen As Long _
) ' signature typée
'...
Call CopyMemory(VarPtr(t), mysql_init(0), LenB(t))
'***
etc..
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
si j'ai bien compris, voici une façon de faire..
<non testé>
'***
Option Explicit
Private type MonType
Var1 as integer
Var 2 as long
...
End Type
Private Declare Function mysql_init _
Lib "libmysql.dll" _
( _
byval pMySQL as Long _
) as long
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByRef pDst As Any, _
ByRef pSrc As Any, _
ByVal ByteLen As Long _
)
Private Sub Main()
Dim t as MonType
Call CopyMemory(t, ByVal mysql_init(0), LenB(t))
End Sub
'***
il est aussi possible comme l'a mentionnée François de jouer avec les
paramètres de CopyMemory afin de modifier sa méthode d'utilisation, en
quelques exemples :
'***
' signature typée
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByRef pDst As MonType, _
ByVal pSrc As Long, _
ByVal ByteLen As Long _
)
'...
Call CopyMemory(t, mysql_init(0), LenB(t))
'***
'***
' pointeurs seulement..
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByVal pDst As Long, _
ByVal pSrc As Long, _
ByVal ByteLen As Long _
) ' signature typée
'...
Call CopyMemory(VarPtr(t), mysql_init(0), LenB(t))
'***
etc..
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
si j'ai bien compris, voici une façon de faire..
<non testé>
'***
Option Explicit
Private type MonType
Var1 as integer
Var 2 as long
...
End Type
Private Declare Function mysql_init _
Lib "libmysql.dll" _
( _
byval pMySQL as Long _
) as long
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByRef pDst As Any, _
ByRef pSrc As Any, _
ByVal ByteLen As Long _
)
Private Sub Main()
Dim t as MonType
Call CopyMemory(t, ByVal mysql_init(0), LenB(t))
End Sub
'***
il est aussi possible comme l'a mentionnée François de jouer avec les
paramètres de CopyMemory afin de modifier sa méthode d'utilisation, en
quelques exemples :
'***
' signature typée
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByRef pDst As MonType, _
ByVal pSrc As Long, _
ByVal ByteLen As Long _
)
'...
Call CopyMemory(t, mysql_init(0), LenB(t))
'***
'***
' pointeurs seulement..
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByVal pDst As Long, _
ByVal pSrc As Long, _
ByVal ByteLen As Long _
) ' signature typée
'...
Call CopyMemory(VarPtr(t), mysql_init(0), LenB(t))
'***
etc..
--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic