OVH Cloud OVH Cloud

[Windev 9] pointeurs ?...

6 réponses
Avatar
Sylvestre
Hello

Je dois interfacer une dll, certaine fonction
renvoie des pointeurs sur des structures, je ne
sais comment faire
en windev pour récuperer ces pointeurs..

Merci

6 réponses

Avatar
Romain PETIT
Sylvestre avait soumis l'idée :
Hello

Je dois interfacer une dll, certaine fonction renvoie des pointeurs sur des
structures, je ne sais comment faire
en windev pour récuperer ces pointeurs..



Tu crées un structure WD correspondant à la structure de la DLL (avec
les mêmes types de variables) et tu instancies une variable de ce type.
Tu récupères le pointeur en tant qu'entier.
Tu copies ce qui est en mémoire à l'adresse du pointeur en utilisant
Transfert.

A la louche, de mémoire :

LaStructure est une structure
UnEntier est un entier
Une Chaine ASCIIZ sur 255
FIN

vStruct est une LaStructure
ePointeur est un entier
ePointeur = AppelDLL32("LaDll", "LaFonction")

Transfert(&vStruct, ePointeur, dimension(vStruct))

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Pascal R.
Sylvestre a écrit :
Hello

Je dois interfacer une dll, certaine fonction
renvoie des pointeurs sur des structures, je ne
sais comment faire
en windev pour récuperer ces pointeurs..

Merci




Bonjour,

1) Déclarer les structures dans le projet
2) Déclarer un variable du type de te structure
3) Récupèrer les pointeurs dans des Entiers ( entiers long si WD55)
4) Réaliser un Transfert :
Transfert( &MaVarStructure, MonEntier, Dimension( MaVarStructure))

Voila, ca devrait marcher !

Pascal
Avatar
Sylvestre
Hello

Merci pour les réponses, c'est effectivement ça,
avec un entier sur 4 octets, on récupère bien le
pointeur.
Par contre, j'ai un autre problème, la plupart des
fonctions de la dll ne passe pas, j'ai le message
"fonction inconnue dans la dll"
dans le source, C, de la dll il est précisé qu'il
faut utiliser une convention d'appelle win32, y'a
t'il une syntaxe particulière à respecter ?

Merci

"Sylvestre" a écrit dans le
message de news:
428c80a8$0$23075$
Hello

Je dois interfacer une dll, certaine fonction
renvoie des pointeurs sur des structures, je ne
sais comment faire
en windev pour récuperer ces pointeurs..

Merci



Avatar
Pascal R.
Sylvestre a écrit :
Hello

Merci pour les réponses, c'est effectivement ça,
avec un entier sur 4 octets, on récupère bien le
pointeur.
Par contre, j'ai un autre problème, la plupart des
fonctions de la dll ne passe pas, j'ai le message
"fonction inconnue dans la dll"
dans le source, C, de la dll il est précisé qu'il
faut utiliser une convention d'appelle win32, y'a
t'il une syntaxe particulière à respecter ?

Merci

"Sylvestre" a écrit dans le
message de news:
428c80a8$0$23075$

Hello

Je dois interfacer une dll, certaine fonction
renvoie des pointeurs sur des structures, je ne
sais comment faire
en windev pour récuperer ces pointeurs..

Merci








Il faut respecter la casse dans le nom des procédures,
c'est impératif. Ainsi "MaFonctionDLL" est différent
de "MAFONCTIONDLL"

Sinon je ne voit rien d'autre.

Pascal
Avatar
Sylvestre
Hello

J'ai tout essayé, mais je n'ai que deux fonctions
qui passent sur les 70 que contient la dll, je
n'arrive pas à voir d'ou ça vient...


"Pascal R." a écrit dans
le message de news:
d6i7aq$5st$
Sylvestre a écrit :
Hello

Merci pour les réponses, c'est effectivement
ça, avec un entier sur 4 octets, on récupère
bien le pointeur.
Par contre, j'ai un autre problème, la plupart
des fonctions de la dll ne passe pas, j'ai le
message "fonction inconnue dans la dll"
dans le source, C, de la dll il est précisé
qu'il faut utiliser une convention d'appelle
win32, y'a t'il une syntaxe particulière à
respecter ?

Merci

"Sylvestre" a écrit dans
le message de news:
428c80a8$0$23075$

Hello

Je dois interfacer une dll, certaine fonction
renvoie des pointeurs sur des structures, je ne
sais comment faire
en windev pour récuperer ces pointeurs..

Merci








Il faut respecter la casse dans le nom des
procédures,
c'est impératif. Ainsi "MaFonctionDLL" est
différent
de "MAFONCTIONDLL"

Sinon je ne voit rien d'autre.

Pascal


Avatar
Sylvestre
Hello

J'avais faux, ca passe avec la bonne orthographe..

"Sylvestre" a écrit dans le
message de news:
428cf850$0$28512$
Hello

J'ai tout essayé, mais je n'ai que deux
fonctions qui passent sur les 70 que contient la
dll, je n'arrive pas à voir d'ou ça vient...


"Pascal R." a écrit dans
le message de news:
d6i7aq$5st$
Sylvestre a écrit :
Hello

Merci pour les réponses, c'est effectivement
ça, avec un entier sur 4 octets, on récupère
bien le pointeur.
Par contre, j'ai un autre problème, la plupart
des fonctions de la dll ne passe pas, j'ai le
message "fonction inconnue dans la dll"
dans le source, C, de la dll il est précisé
qu'il faut utiliser une convention d'appelle
win32, y'a t'il une syntaxe particulière à
respecter ?

Merci

"Sylvestre" a écrit dans
le message de news:
428c80a8$0$23075$

Hello

Je dois interfacer une dll, certaine fonction
renvoie des pointeurs sur des structures, je
ne sais comment faire
en windev pour récuperer ces pointeurs..

Merci








Il faut respecter la casse dans le nom des
procédures,
c'est impératif. Ainsi "MaFonctionDLL" est
différent
de "MAFONCTIONDLL"

Sinon je ne voit rien d'autre.

Pascal