Bonjour,

Je dois appeler une fonction d'une dll C++ en Delphi.
Mais j'ai des pb avec les types (notamment "typedef BYTE RSI_TEMPLATE[9]").
Je ne sais pas d'autres part comment initialiser ma structure delphi avant de la passe à la fonction.
Faut-il attribuer de la mémoire ???, ect ...


code c++ (fichier .h)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
//déclaration de la fonction à appeler
RSI_DLL RSI_RESULT RSI_API rsiGetUserRecord(byte id, RSI_USER_RECORD FAR* ur);
 
//les types
typedef BYTE RSI_TEMPLATE[9];
typedef struct
{
	byte					id;
	RSI_TEMPLATE 			templateVector;
}	RSI_USER_RECORD;

Mon Code delphi
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
 
//déclaration de la  fonction 
function rsiGetUserRecord(Userid : byte; userRec:RSI_USER_RECORD) :integer; stdCall; external ...
 
//délaration des types delphi
  RSI_TEMPLATE=array[1..9] of byte;
 
  RSI_USER_RECORD=record
		ID : byte;
		templateVector : RSI_TEMPLATE;
  end;
 
//appel de la fonction
var
 userRec:RSI_USER_RECORD;
begin
  //pour le user ayant id=1
  result := rsiGetUserRecord(1,userRec);
 
//--> erreur "Violation d'accès à l'adresse .. ds le module rsi32.dll..."
end;
 
merci pour votre aide