gilch
Messages postés18Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention15 avril 2013
-
17 oct. 2006 à 14:01
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
6 nov. 2006 à 10:09
Bonjour,
j'utilise une dll ecrite en C++ sous delphi, le fonctionement est ok mais j'ai un pb avec
la declaration d'une fonction.
Dans le programme C++ qui utilise aussi cette dll, la fonction est declarée comme suit:
EXDLL_DECL int EXRead(WORD *object, BYTE *format, BYTE **repBuffer, WORD *repBufferSize);
Je n'arrive pas a déclarer correctement les pointeurs sur mon appli en delphi, quelqu'un peut t'il me dire comment ecrire cette fonction sous delphi??
J'ai essayé avec:
Function EXread(Object: word; format : byte ; repbuffer : word ; repbuffersize: word):integer;CDECL;external "EX.dll";
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 17 oct. 2006 à 19:04
Salut,
Function EXread(var Object: word; var format : byte ; var
repbuffer : word ; repbuffersize: ^^word):integer;CDECL;external
"EX.dll";
Le var pour le passage par référence. Donc revenant à un passage de pointeurs.
Pour le ^^word, je suis pas sur et je le sens pas trops, et j'ai pas
Delphi sous la main... Mais tu dois pouvoir faire qqch comme ça :
type PWord = ^Word;
type PPWord = ^PWord;
Puis :
Function EXread(var Object: word; var format : byte ; var repbuffer :
word ; repbuffersize: PPWord):integer;CDECL;external "EX.dll";
Le tout avec réserve.
@+
<hr size="2" width="100%" />Je suis en deuxième
année en école d'ingénieur et passionné de développement logiciel sous
D7 et VB6. Je cherche un stage en entreprise sur Paris de début avril à
fin juillet 2007.
gilch
Messages postés18Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention15 avril 2013 19 oct. 2006 à 17:04
Grand merci pour ton aide, ca fonctionne bcp mieux ainsi.
Pour le pointeur de pointer, je m'en suis sorti avec un "bytearray".
Pour le reste c nickel, plus qu'une fonction et c'est fini grace a to post
encor merci
delphi82001
Messages postés3Date d'inscriptionmardi 25 mai 2004StatutMembreDernière intervention 6 novembre 2006 6 nov. 2006 à 05:23
Salut...,
j'utilise une dll ecrite en C++,
dans delphi,
la declaration des fonctions de la DLL dans delphi fait erreur ;.
le code source c++ de la function :
DEFRAG_API int RunDefrag(char *MountPoint, int Mode) { if ((MountPoint NULL) || (*MountPoint '\0')) {
DefragAllDisks(Mode);
} else {
DefragOneDisk(MountPoint,Mode);
}
return(0);
}
le code delphi qui je utilisé est :
Function RunDefrag(MountPoint : char; Mode:integer):integer;cdecl ; external 'DefragDll.dll' name 'RunDefrag';
mai delphi fait un erreur (violation d'accés a l'adresse 100047b0 ) ,
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 6 nov. 2006 à 10:09
Je sais pas ce que veut dire DEFRAG_API.
Pour MountPoint, c'est apparement une chaîne de caractère, donc :
Function RunDefrag(MountPoint : PChar; Mode:integer):integer;cdecl ; external 'DefragDll.dll' name 'RunDefrag';
Mais j'ai peur que DEFRAG_API soit une convention d'appel. Faudrait savoir précisément sont fonctionnement.
<hr size="2" width="100%" />Je suis en deuxième année en
école d'ingénieur etpassionné de développement logiciel sous D7 et VB6.
Je cherche un stage en entreprise sur Paris de début avril à fin
juillet 2007.