Vc++ -> vb6 retour de fonctions (c) de type tableau en vb!!
matever
Messages postés7Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention 7 novembre 2003
-
18 oct. 2003 à 01:43
matever
Messages postés7Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention 7 novembre 2003
-
23 oct. 2003 à 23:54
Bonjours à tous!
je dispose d'une fonction appartenant à une dll:
POINT BUF_TMP[500];//global
POINT * ENVOIS_BUF_TMP()
{
MessageBox( NULL, "Envoi du tableau","Message" ,MB_OK);
return BUF_TMP;
}
cette fonction me renvoi normalement l'adresse du tableau BUF_TMP[500]?
mon pb est que je souhaite obtenir les valeurs de ce tableau dans vb et que je ne sais pas comment faire quelqu'un peut il m'aiguiller? :big)
A voir également:
Vc++ -> vb6 retour de fonctions (c) de type tableau en vb!!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 oct. 2003 à 10:07
Methode pas bonne pour vb qui ne connait pas les pointeurs. Le tableau est a declarer dans vb et tu prends en param un pointeur sur ce tableau, ByRef pour vb et tu passes Tab(0) en appelant la dll.
BruNews, ciao...
matever
Messages postés7Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention 7 novembre 2003 18 oct. 2003 à 13:22
Salut Brunews! merci de me répondre!
je pensais qu'avec l'adresse de ce tableau passé a vb , il suffisait d'utiliser un 'copymemory' pour obtenir le tableau complet!... je suis à coté?
et pour t'on explication, tu peux être plus précis... sur l'implémentation...
Merci. Mathieu.A++
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 oct. 2003 à 17:27
EXEMPLE:
Declare Sub bnuQuickSortLong Lib "SpeedVb.dll" (pArray As Long, nElem As Long)
Dim lArr(10) As Long ' 11 elements
' remplissage de lArr() a faire ici
bnuQuickSortLong lArr(0), 11 ' appel de la dll pour tri
CODE DE DLL, params en PTRs !!!
void __stdcall bnuQuickSortLong(int *base, unsigned *num)
{
// code de tri ici
}
matever
Messages postés7Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention 7 novembre 2003 23 oct. 2003 à 23:54
impec! merci beaucoup!
:big) j'ai refais la fonction en c qui donne:
void __stdcall ENVOIS_BUF_TMP(POINT *BUF,long IndMax)
POINT BUF_TMP;
void __stdcall ENVOIS_BUF_TMP(POINT *BUF,long IndMax)
{
for (i=0;iet pour l'appel en vb:
Private Declare Sub ENVOIS_BUF_TMP Lib "hook.dll" (ByRef BUF_TMP As POINTAPI, ByRef IndMax As Long)
puis la fonction test:
Public Sub test1()
Dim pt(500) As POINTAPI
Dim IndMax As Long
IndMax = 500
Call ENVOIS_BUF_TMP(pt(0), IndMax)
Call ENVOIS_BUF_TMP(pt(0), IndMax)
Form1.Cls
For i = 0 To IndMax - 1
Form1.Print "x" & i & ": " & pt(i).x & " y" & i & ": " & pt(i).y
Next i
End Sub