Comment déclarer des 2 cotés (c# / vb6)
ce tableau de double afin que le tableau soit
reconnu comme tel, et puisse etre rempli
depuis l'activex vb6 ?
Si vous avez des idées, exemples, ...
Comment déclarer des 2 cotés (c# / vb6)
ce tableau de double afin que le tableau soit
reconnu comme tel, et puisse etre rempli
depuis l'activex vb6 ?
Si vous avez des idées, exemples, ...
Comment déclarer des 2 cotés (c# / vb6)
ce tableau de double afin que le tableau soit
reconnu comme tel, et puisse etre rempli
depuis l'activex vb6 ?
Si vous avez des idées, exemples, ...
Bonsoir Cybertof,
Va pour un exemple :
'======= VB6.0 Code =======
Option Explicit
Option Base 0
Bonsoir Cybertof,
Va pour un exemple :
'======= VB6.0 Code =======
Option Explicit
Option Base 0
Bonsoir Cybertof,
Va pour un exemple :
'======= VB6.0 Code =======
Option Explicit
Option Base 0
1/ Pour les chaines de caractères,
pour les BSTR de VB6, tu emploierais
quelle syntaxe (toujours tableau de chaine).
2/ Pour un tableau de structure...c'est faisable ?
"En VB les chaînes sont stockées sous la
forme d'un type appelé BSTR.
En C, le type de chaîne est LPSTR
qui est un pointeur vers une chaîne
terminée par le caractère nul.
Passer une chaîne BSTR par valeur revient
à transmettre un pointeur sur le premier
caractère de la chaîne, ce qu'attend votre fonction C.
Avant de passer la chaîne à la fonction C,
vous devez lui allouer un espace mémoire suffisant,
par exemple avec la fonction String().
Dans cet exemple la chaîne passée
en paramètre est modifiée par la fonction GetMessage."
1/ Pour les chaines de caractères,
pour les BSTR de VB6, tu emploierais
quelle syntaxe (toujours tableau de chaine).
2/ Pour un tableau de structure...c'est faisable ?
"En VB les chaînes sont stockées sous la
forme d'un type appelé BSTR.
En C, le type de chaîne est LPSTR
qui est un pointeur vers une chaîne
terminée par le caractère nul.
Passer une chaîne BSTR par valeur revient
à transmettre un pointeur sur le premier
caractère de la chaîne, ce qu'attend votre fonction C.
Avant de passer la chaîne à la fonction C,
vous devez lui allouer un espace mémoire suffisant,
par exemple avec la fonction String().
Dans cet exemple la chaîne passée
en paramètre est modifiée par la fonction GetMessage."
1/ Pour les chaines de caractères,
pour les BSTR de VB6, tu emploierais
quelle syntaxe (toujours tableau de chaine).
2/ Pour un tableau de structure...c'est faisable ?
"En VB les chaînes sont stockées sous la
forme d'un type appelé BSTR.
En C, le type de chaîne est LPSTR
qui est un pointeur vers une chaîne
terminée par le caractère nul.
Passer une chaîne BSTR par valeur revient
à transmettre un pointeur sur le premier
caractère de la chaîne, ce qu'attend votre fonction C.
Avant de passer la chaîne à la fonction C,
vous devez lui allouer un espace mémoire suffisant,
par exemple avec la fonction String().
Dans cet exemple la chaîne passée
en paramètre est modifiée par la fonction GetMessage."
Y a moyen de caster la structure
VB6 en structure C# ?
Ce qui me permet de manipuler
par la suite uniquement du managed data.
(sans marshalling à chaque accès à une donnée
de la structure si c'est dans un tableau).
Y a moyen de caster la structure
VB6 en structure C# ?
Ce qui me permet de manipuler
par la suite uniquement du managed data.
(sans marshalling à chaque accès à une donnée
de la structure si c'est dans un tableau).
Y a moyen de caster la structure
VB6 en structure C# ?
Ce qui me permet de manipuler
par la suite uniquement du managed data.
(sans marshalling à chaque accès à une donnée
de la structure si c'est dans un tableau).
Bonsoir Cybertof;
La ligne de code suivante
"MyVB6Object.DataStruct myData = new MyVB6Object.DataStruct();"
alloue une structure managée côté CLR et non côté VB6 (i.e. Win 32) !
Le marshalling n'est utilisé que sur l'appel à la méthode "FillStru ct".
A ce moment, les différents champs de la structure sont "marshallés"
afin d'être interprétable côté VB6.
Il suffit de désassembler la DLL "Interop.MyVB6Object.dll" pour
s'en convaincre.
Bonsoir Cybertof;
La ligne de code suivante
"MyVB6Object.DataStruct myData = new MyVB6Object.DataStruct();"
alloue une structure managée côté CLR et non côté VB6 (i.e. Win 32) !
Le marshalling n'est utilisé que sur l'appel à la méthode "FillStru ct".
A ce moment, les différents champs de la structure sont "marshallés"
afin d'être interprétable côté VB6.
Il suffit de désassembler la DLL "Interop.MyVB6Object.dll" pour
s'en convaincre.
Bonsoir Cybertof;
La ligne de code suivante
"MyVB6Object.DataStruct myData = new MyVB6Object.DataStruct();"
alloue une structure managée côté CLR et non côté VB6 (i.e. Win 32) !
Le marshalling n'est utilisé que sur l'appel à la méthode "FillStru ct".
A ce moment, les différents champs de la structure sont "marshallés"
afin d'être interprétable côté VB6.
Il suffit de désassembler la DLL "Interop.MyVB6Object.dll" pour
s'en convaincre.
Car mon type dépend de ma DLL, alors
que je souhaite travaille coté C#
uniquement avec un tableau de type CStruct,
la DLL n'étant utilisée que pour remplir mon tableau.
[...]
afin de ne pas utiliser VB6AX.VB6Struct
comme type de base de mes éléments.
Car mon type dépend de ma DLL, alors
que je souhaite travaille coté C#
uniquement avec un tableau de type CStruct,
la DLL n'étant utilisée que pour remplir mon tableau.
[...]
afin de ne pas utiliser VB6AX.VB6Struct
comme type de base de mes éléments.
Car mon type dépend de ma DLL, alors
que je souhaite travaille coté C#
uniquement avec un tableau de type CStruct,
la DLL n'étant utilisée que pour remplir mon tableau.
[...]
afin de ne pas utiliser VB6AX.VB6Struct
comme type de base de mes éléments.