Voici mon problème.
J'avais une DLL, avec une fonction exporté :
1 2 3 4
| procedure InitColisageDLL(HandleApp: HWND; pSession: Pointer; const sCodeSociete, sCodeSite, sCodeAtelier, sUtilisateur: PChar; const bAdministrateur: LongBool); stdcall;
exports
InitColisageDLL name 'InitColisageDLL'; |
Fonction que j'appelais comme ça depuis un exe :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var
InitColisageDLL: procedure(HandleApp: HWND; pSession: Pointer; const sCodeSociete, sCodeSite, sCodeAtelier, sUtilisateur: PChar; const bAdministrateur: LongBool); stdcall;
...
HandleDLLColisage := LoadLibrary('C:\DLL\Colisage.dll');
if HandleDLLColisage = 0 then
Application.MessageBox('.Erreur : ...')
else
begin
try
@InitColisageDLL := GetProcAddress(HandleDLLColisage, 'InitColisageDLL');
if @InitColisageDLL = nil then
Application.MessageBox(PChar('.Erreur : ...')
else
begin
try
try
InitColisageDLL(Application.Handle, @Session, PChar('HE'), PChar('HM'), PChar('15'), PChar(szUtilisateur), bDroitAdmin); |
Jusque là, tout allait bien.
Maintenant, je veux rajouter un paramètre.
Dans ma DLL :
procedure InitColisageDLL(HandleApp: HWND; pSession: Pointer; const sCodeSociete, sCodeSite, sCodeAtelier, sCodeZone, sUtilisateur: PChar; const bAdministrateur: LongBool); stdcall;
Dans mon exe :
InitColisageDLL(Application.Handle, @Session, PChar('HE'), PChar('HM'), PChar('15'), PChar('1'), PChar(szUtilisateur), bDroitAdmin);
Si j'essai de récupérer la valeur de ce nouveau paramètre (sCodeZone), j'ai une splendide erreur (violation d'accès), comme s'il n'existait pas. ![:bug:](https://www.developpez.net/forums/images/smilies/icon_bug.gif)
1 2 3 4
| _szCodeSociete := sCodeSociete;
_szCodeSite := sCodeSite;
_szCodeAtelier := sCodeAtelier;
_szCodeZone := sCodeZone; <-- ERREUR ICI. |
Qu'est ce que j'ai oublié ?
Partager