Hi,
ich habe ein Problem mit meiner Plugin Schnittstelle und zwar habe ich bei der LoadPlugin procedure einen kleinen Abschnitt zum erstellen eines TBX Menu Eintrags eingefügt. Funktioniert soweit alles, aber wenn ich dann das Programm beende bekomme ich diese
Exception:
Code:
---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt App.exe ist eine
Exception der Klasse EInvalidPointer aufgetreten. Meldung: 'Ungültige Zeigeroperation'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Hier der Code:
Delphi-Quellcode:
procedure TPlugin.LoadPlugIn;
var
ProcAddr: Pointer;
LoadPlugInProc: TLoadPlugIn;
begin
// load library
FHandle := LoadLibrary(PChar(DLLName));
if (FHandle = INVALID_HANDLE_VALUE) or (FHandle = 0) then
// library could not be loaded
Abort;
ProcAddr := GetProcAddress(FHandle, 'LoadPlugIn');
if ProcAddr = nil then
begin
// plug-in load function is not exported, free library...
FreeLibrary(FHandle);
FHandle := INVALID_HANDLE_VALUE;
// and abort
Abort;
end;
try
LoadPlugInProc := TLoadPlugIn(ProcAddr);
// try executing the registration method
if not LoadPlugInProc(FOwner.Owner, FPlugIn) then
// registration failed, abort loading
Abort
else begin
mainform.newitem := TTBXItem.Create(Mainform);
mainform.newitem.Caption := FPlugin.GetName;
mainform.pluginitem.Add(mainform.newitem);
end;
except
// plug-in load function is not exported, free library...
FreeLibrary(FHandle);
FHandle := INVALID_HANDLE_VALUE;
// and abort
Abort;
end;
end;
Komisch ist, dass wenn ich die Execute function eines Plugins aufrufe, kommt diese
Exception nicht mehr.
Ich hoffe ihr könnt mir helfen.
MFG Chris.