Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DLL : récupérer un tableau passé en paramètre[VBA Access]

5 réponses
Avatar
Thom
Bonjour tout le monde,
J'ai une procédure stockée dans une Dll qui doit me calculer un Tableau.
Je ne connais pas à l'avance le nombre de ligne retourné.

Je lui passe en parmètre de la procédure un tableau qu'elle doit remplir.

Le tableau retourné devrait être à deux dimension, mais une seule n'est
retournée.

Alors j'ai essayé de redimentionner manuelement en deux dimension, mais
après appel de la procédure la 2ème dimension disparait.

Avez-vous une idée, pour que je puisse garder un tableau à 2 dimensions?

Merci a vous,

Thom



Global MonTableau() as double

Public Declare Sub MA_PROC Lib "MaDLL.dll" (Tableau() as double)

Private Sub RemplirTableau()

Redim Preserve MonTableau(1,2)

Call MaProc(Montableau)

End Sub

5 réponses

Avatar
jm
"Thom" wrote in message
news:
Bonjour tout le monde,
J'ai une procédure stockée dans une Dll qui doit me calculer un Tableau.
Je ne connais pas à l'avance le nombre de ligne retourné.

Je lui passe en parmètre de la procédure un tableau qu'elle doit remplir.

Le tableau retourné devrait être à deux dimension, mais une seule n'est
retournée.

Alors j'ai essayé de redimentionner manuelement en deux dimension, mais
après appel de la procédure la 2ème dimension disparait.

Avez-vous une idée, pour que je puisse garder un tableau à 2 dimensions?

Merci a vous,

Thom



Global MonTableau() as double

Public Declare Sub MA_PROC Lib "MaDLL.dll" (Tableau() as double)

Private Sub RemplirTableau()

Redim Preserve MonTableau(1,2)

Call MaProc(Montableau)

End Sub



Hello,

tu trouveras des réponses dans la FAQ:
http://faq.vb.free.fr/index.php?question4

Entre autre, des exemples pour les tableaux ici :
http://support.microsoft.com/default.aspx/kb/207931/en-us

--
Jean-marc
Avatar
Thom
Merci pour ta réponse, mais je ne trouve d'exemple de tableau à plusieurs
dimensions.


"jm" a écrit dans le message de news:
45a37b7e$0$2685$
"Thom" wrote in message
news:
Bonjour tout le monde,
J'ai une procédure stockée dans une Dll qui doit me calculer un Tableau.
Je ne connais pas à l'avance le nombre de ligne retourné.

Je lui passe en parmètre de la procédure un tableau qu'elle doit remplir.

Le tableau retourné devrait être à deux dimension, mais une seule n'est
retournée.

Alors j'ai essayé de redimentionner manuelement en deux dimension, mais
après appel de la procédure la 2ème dimension disparait.

Avez-vous une idée, pour que je puisse garder un tableau à 2 dimensions?

Merci a vous,

Thom



Global MonTableau() as double

Public Declare Sub MA_PROC Lib "MaDLL.dll" (Tableau() as double)

Private Sub RemplirTableau()

Redim Preserve MonTableau(1,2)

Call MaProc(Montableau)

End Sub



Hello,

tu trouveras des réponses dans la FAQ:
http://faq.vb.free.fr/index.php?question4

Entre autre, des exemples pour les tableaux ici :
http://support.microsoft.com/default.aspx/kb/207931/en-us

--
Jean-marc





Avatar
Jean-marc
Thom wrote:
Merci pour ta réponse, mais je ne trouve d'exemple de tableau à
plusieurs dimensions.



Bien sur, car ta DLL ne sais pas ce qu'est tableau, et c'est bien normal.
Elle reçoit juste un pointeur sur le premier élément de ta structure.

Un tableau n'est qu'une convention pour représenter des données contigues
en mémoire. Le plus simple est de travailler avec des tableaux à 1
dimension,
et à remettre ensuite les données sous la forme qui t'arrange.

Attention quand même si tu fais des allocations dynamiques dans ta DLL, tu
as
intérêt à savoir *parfaitement* ce que tu fais, sinon tu auras de
magnifiques
plantages dans l'IDE :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Thom
Merci Jean-Marc pour cette réponse clair.

Ca marche bien maintenant... après quelques plantages!

Bonne journée


"Jean-marc" a écrit dans le message
de news: 45a3ddef$0$15378$
Thom wrote:
Merci pour ta réponse, mais je ne trouve d'exemple de tableau à
plusieurs dimensions.



Bien sur, car ta DLL ne sais pas ce qu'est tableau, et c'est bien normal.
Elle reçoit juste un pointeur sur le premier élément de ta structure.

Un tableau n'est qu'une convention pour représenter des données contigues
en mémoire. Le plus simple est de travailler avec des tableaux à 1
dimension,
et à remettre ensuite les données sous la forme qui t'arrange.

Attention quand même si tu fais des allocations dynamiques dans ta DLL, tu
as
intérêt à savoir *parfaitement* ce que tu fais, sinon tu auras de
magnifiques
plantages dans l'IDE :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




Avatar
jm
"Thom" wrote in message
news:
Merci Jean-Marc pour cette réponse clair.

Ca marche bien maintenant... après quelques plantages!

Bonne journée




Merci pour le retour d'info :-)

--
Jean-marc