Salut, Je reposte a propos des pb traduction C++/ Delphi
Voila ce que j'ai dans un .h C++ permettant d'appelé une DLL C++
J'ai Traduit ca en :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 struct Cbi{//callback information void *handle; unsigned status; unsigned error; unsigned sensors; }; typedef void (*Cbf)(Cbi&cbi);//callback function << J'ai du mal ca capté comment traduire ca //open comm port, set a callback function and return a handle to an opaque structure typedef int (*Open)(char*port, Cbf cbf, void*&handle);
J'ai essayé differente approche pour appellé et declaré la traduction de la fonction open. Mais ca se traduit a chaque fois par une violation d'acces.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 sCbi = packed record handle : pointer; status : cardinal; error : cardinal; sensors: cardinal; end; TCbf = Procedure (var Cbi : sCbi); // ici j'ai de gros doute function dll_Open (port : pchar; cbf : TCbf ; handle : pointer) : integer; cdecl; external 'tkt.dll' name 'open'; et j'appelle la dll de cette maniere : procedure tkt_callback(var Cbi : sCbi); begin showmessage('Callback Reached'); end; procedure TForm1.BtnOpenClick(Sender: TObject); var tkt_handle : pointer; begin dll_Open (pchar(EdComPort.Text), tkt_callback , tkt_handle); end;
J'ai egalement essayé d'appel dll_open avec un nil pour callback, resultat idem.
J'ai egalement des doutes au nivo du CDECL, ne vaut il pas mieux utilisé STDCALL ? (je n'ai pas l'info sur comment est faite la DLL)
Comment le savoir d'ailleurs ?
Merci pour vos eclaircissements
Partager