Bon voila, J'essaie de passer une procedure de mon programme Delphi à une DLL (que j'ai crée)

voici quelques extraits du code :

1) la DLL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 Library Lib1;
 
  var DrawFunc : Procedure;
 
  procedure SetDrawFunc( P : Proc) ;
  begin
   DrawFunc:=P;
  end;
 
  ...
2) le programme 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
24
 
 
 interface
  ...
  type
   Proc = Procedure;
 
  procedure SetDrawFunc( P : Proc);external 'Lib1.dll';
 
  ...
 
 implementation
 
  procedure draw;
  begin
   ... // effectue les taches de dessin ( en OpenGL si vous êtes curieux )
  end;
 
  procedure init;
  begin
   ...
   SetDrawFunc(draw); (* ***xxx*** *) <-- c'est la ou ca bloque !
   ...
  end;
Le problème survient à la ligne :

SetDrawFunc(draw); (* ***xxx*** *) <-- c'est la ou ca bloque !

Delphi me balance un 'Project1.exe ... Access Violation : Read of address 0000000 ...' Vous connaissez la chanson.

Quelqu'un pourrait me dépanner ? j'arrive pas à comprendre l'origine de ce problème,
d'autant que la DLL et la procedure SetDrawFunc se chargent correctement ( j'ai essayé la méthode load-time linking ( loadLibrary) et j'ai vérifié les addresses : pas de nil).

Merci d'avance.

P.S -1 : C'est bien dans le forum Delphi que je dois poster ce message, où à celui de l'OpenGL ?
P.S -2 : Vite SVP, ce genre de problèmes à la X-Files me donnent l'envie de laisse tomber
Delphi et la programmation pour aller jouer Quake III pendant des heures !