Vc++ -> vb6 retour de fonctions (c) de type tableau en vb!!

matever Messages postés 7 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 7 novembre 2003 - 18 oct. 2003 à 01:43
matever Messages postés 7 Date d'inscription jeudi 13 mars 2003 Statut Membre Derniè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)

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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...
0
matever Messages postés 7 Date d'inscription jeudi 13 mars 2003 Statut Membre Derniè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++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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
}

BruNews, ciao...
0
matever Messages postés 7 Date d'inscription jeudi 13 mars 2003 Statut Membre Derniè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
0
Rejoignez-nous