![]() |
Re: Zugriff auf lokale Variablen bei Callback aus DLL
...okay...so ganz verstanden habe ich es jetzt aber nicht...wie müsste ich dann meinen Code ändern?
Vielen Dank, kaju |
Re: Zugriff auf lokale Variablen bei Callback aus DLL
Ganz einfach: (Freie)Funktion/Methode <> Methode einer Klasse.
Delphi-Quellcode:
unit MainFrm;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, xpCore, xpPlugInMng; type { TfrmMain } TfrmMain = class(TForm) btnTest: TButton; edtFirstName: TLabeledEdit; edtLastName: TLabeledEdit; mmoLog: TMemo; PlugInManager: TxpPlugInManager; procedure FormCreate(Sender: TObject); procedure PlugInManagerLoadPlugIn(Sender: TObject; PlugIn: TxpPlugIn); procedure PlugInManagerUnloadPlugIn(Sender: TObject; PlugIn: TxpPlugIn); procedure btnTestClick(Sender: TObject); private { Private-Deklarationen } FLocalVar: string; public { Public-Deklarationen } end; var frmMain: TfrmMain; procedure CallbackProc(ActionGUID: string; CallbackInfo: Pointer); implementation uses SamplePlugInIntf; {$R *.dfm} procedure CallbackProc(ActionGUID: string; CallbackInfo: Pointer); var CallbackStruct: PCallbackStruct; begin ShowMessage('B: ' + frmMain.FLocalVar); CallbackStruct := CallbackInfo; ShowMessage('Callback called:' + #13#13 + Trim(CallbackStruct^.FirstName + #32 + CallbackStruct^.LastName)); end; ... |
Re: Zugriff auf lokale Variablen bei Callback aus DLL
Du übergibst nicht direkt Deine CallbackProc an die externe Dll, sondern die Rückgabe von MakeProcInstance(CallbackProc);
Die merkst Du Dir zudem vorher in einer Variable - und nachdem Du fertig bist und der Callback nicht mehr aufgerufen werden kann gibst Du diesen Pointer auch mit FreeProcInstance wieder frei. Sonst hast Du ein Memory-Leak von 15 bytes. |
Re: Zugriff auf lokale Variablen bei Callback aus DLL
Hallo...
Danke, das werde ich mal ausprobieren - ihr seid spitze 8-)) Gruß, kaju |
Re: Zugriff auf lokale Variablen bei Callback aus DLL
Nochmal Hallo.
Also, ich habe jetzt mein PlugIn-System umgeschrieben und siehe da, nun funktioniert der Zugriff auf lokale Variablen ohne Umweg 8-))) Ich muss mich auch nicht selber um die Allocation und Deallocation des Speichers kümmern...super 8-) Vielen Dank nochmal, kaju |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz