Bonjour
J'ai un souci avec le passage d'un PChar à une DLL :
Voici le code de la fonction DLL que je veux appeler (elle me renseigne sur le numéro de version de la DLL):Et voici comment j'y fais appel dans un petit programme de test :
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 type Tcodereturn = longint; TSZ = pchar; function VMK_version (SZversion : TSZ): Tcodereturn; stdcall; var str : string; status : longint; begin str:=ikimal_version; status:=length(str); strbufsize(SZversion); strPcopy(SZversion,str); result:=status; end;Quand je fais ca, j'ai une erreur d'accès d'adresse mémoire dans la DLL sur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 type Tcodereturn = longint; TSZ = PChar; [...] var str : TSZ; [...] begin; VMK_version(str);J'ai essayé en déclarant ma variable str comme une string et en faisant
Code : Sélectionner tout - Visualiser dans une fenêtre à part strPcopy(SZversion,str);mais j'ai la même erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part VMK_version(pchar(str));
La DLL est utilisée dans plein d'application, donc je ne pense pas que le problème vienne de la, mais plutôt de la façon dont j'y fais appel.
Petit précision je travaille avec Turbo Delphi sous Vista.
Est ce que qq un a une idée?
Partager