Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit TBX und Plugin Schnittstelle (https://www.delphipraxis.net/32298-problem-mit-tbx-und-plugin-schnittstelle.html)

MasterC 21. Okt 2004 13:10


Problem mit TBX und Plugin Schnittstelle
 
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.

mirage228 21. Okt 2004 13:16

Re: Problem mit TBX und Plugin Schnittstelle
 
Hi,

ich habe auch mal eine so ähnlich Pluginschnitstelle gemacht (meine Prozedur heisst auch LoadPlugin :mrgreen:)

versuch mal beim OnClose des Forms die geladenen Bibliotheken mit FreeLibrary() freizugeben.

mfG
mirage228

MasterC 21. Okt 2004 13:19

Re: Problem mit TBX und Plugin Schnittstelle
 
Mach ich ja, wenn ich kein TBX Item dem Menü hinzufüge kommt diese Exception ja nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 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