Salut à tous![]()
Voilà je vous écris pour tenter de trouver une solution à mon problème...
J'ai un programme principal qui appelle une dll en dynamique...
Dans le programme principal, j'utilise un Composant de mon cru appelé TPedroDossier... C'est un composant invisible dérivé de TComponent...
La Dll me sert à lancer une form dans laquelle je modifie les données de mon TPedroDossier...
Voila comment je m'y suis pris:
Code de la fiche de la DLL (déclaration)
Code de la DLL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 TMain=class(TForm) ... public Dossier:TPedroDossier; ... end;
Mon souci est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function Execute(AppHandle:HWND;aDossier:TPedroDossier):boolean; begin Application.Handle:=AppHandle; with TMain.Create(Application) do begin Dossier:=aDossier; //Diverses initialisations de TMain Result:=ShowModal=mrOk; Destroy;//Release me pose des problèmes.... :? end; end;
J'ai une erreur d'exception access violation lorsque je tente de lancer 2 fois de suite cette fonction sachant que la première fois ne renvoit pas d'erreur mais ne fonctionne pas non plus...![]()
Mon idée: Dans la fonction Execute de a DLL, j'assigne le pointeur de Dossier à aDossier... Sachant que aDossier est membre de TMain, est-ce que le pointer (et le pointer uniquement) n'est pas libéré lors de la destruction de TMain? Et donc que cette instance de TPedroDossier n'est plus accessible?
Merci d'avance![]()
Partager