cs_Argile92
Messages postés29Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention30 mars 2009
-
10 mars 2009 à 10:28
cs_Argile92
Messages postés29Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention30 mars 2009
-
12 mars 2009 à 09:58
Bonjour à tous,
J'ai crée une DLL C++, exécutable via VB.
Dans VB, j'ai une TYPE que je passe en argument via un SAFEARRAY pour qu'il soit exploitable dans C++.
Néanmoins, je rencontre un problème récurrent...
Lorsque j'initialise mon Type (dans Vb) et qeu je le fais passer dans ma DLL, mon Struct correspondant (dans C++) est mal initialiser..
Je m'explique: certaines valeurs sont "inversées" et d'autre ne sont même pas initialiser, alors que mon Type et mon Struct sont définis de la mêm façon.
J'ai souvent rencontré ce problème, sans jamais trouver une solutions efficace.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 10 mars 2009 à 14:21
Type de VB est struct en C.
On passe l'adresse d'une structure (ByRef) depuis VB et comme normal en C on reçoit pointeur de struct.
Une struct (Type) n'a donc rien à faire dans un SAFEARRAY.
Attention de bien aligner les membres de struct pour qu'ils correspondent en mémoire entre C et VB.
Integer = short
Long = int ou long
etc...
cs_Argile92
Messages postés29Date d'inscriptionlundi 2 mars 2009StatutMembreDernière intervention30 mars 2009 12 mars 2009 à 09:58
Sorry de t'embeter, mais je rencontre à nouveau (pour une raison obscure) le même problème.
J'envoie un Liste de Struct depuis VB que je récupère via un SAFEARRAY dans C++.
Pour 2 classes, aucun problèmes, tout marche
Mais je viens d'en créer une 3e, et certaines valeurs ne correspondent pas.
Je dois donc faire quelque chose de mal, mais je n'arrive pas à voir quoi...
Ci-dessous le Type VBA:
Type Resultats
Dates_() As String 'Tableau des dates
Perf_() As Double 'Tableau des perf
Track_() As Double 'Tableau des tracks
Track100_() As Double 'Tableau des Track d'une stratégie à 100%
Perf100_() As Double 'Tableau des Perf du Track 100%
MaxDD_ As Double 'Maximum DrawDown (plus grosse perte)
MaxDD100_ As Double 'MaxDD du Track 100%