Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Packages: Objekte der Parent-Application verursachen Fehler (https://www.delphipraxis.net/82517-packages-objekte-der-parent-application-verursachen-fehler.html)

Pfoto 14. Dez 2006 21:38


Packages: Objekte der Parent-Application verursachen Fehler
 
Hallo zusammen, :hi:

leider produziert mein (Test-)Programm bei der Verwendung bei einem zur Laufzeit eingebundenen Package einen Fehler.
Dazu benutze ich z.Zt. das Plug-In System von TMS-Software, aber ich denke dies spielt beim Fehler keine Rolle.

Die Situation:
Ich übergebe beim Laden eines Plugins die Referenz auf die Hauptanwendung - soweit so gut.
Das Aufrufen z.B. von simplen Integern aus der Hauptanwendung funktioniert ohne Probleme.

Rufe ich jedoch ein in der Anwendung vorhandenes Objekt auf, entsteht ein Absturz.
Es scheint, als sei das Objekt nicht vorhanden. In meinem Test war es ein simples TFont.

Mein Frage:
Gibt es bei Packages auch diese Einschränkungen wie sie bei DLLs exisitieren?
Der Speicherbereich von Anwendung und Package kann doch gemeinsam (und ohne ShareMem) genutzt werden, oder?


Danke für Eure Hilfe
Pfoto

mkinzler 14. Dez 2006 21:57

Re: Packages: Objekte der Parent-Application verursachen Feh
 
Was für ein Fehler tritt auf?
Zitat:

Der Speicherbereich von Anwendung und Package kann doch gemeinsam (und ohne ShareMem) genutzt werden, oder?
Ja aber ist zu beachten das trotzdem verschiedene Vererbungsschemen vorhanden sind.

Pfoto 14. Dez 2006 22:09

Re: Packages: Objekte der Parent-Application verursachen Feh
 
Der genaue Fehler lautet:
"Zugriffsverletzung bei Adresse ...... im Modul vcl70.bpl"


So sieht übrigens das Interface aus:
Delphi-Quellcode:
   ICustomAppServices = interface
   ['{FC008336-1557-4A5E-963C-5D796E620E64}']
      function GetValue : integer;
      function GetApplication: TApplication;
      function GetFont: TFont;
      property Value : Integer read GetValue;
      property Application: TApplication read GetApplication;
      property Font: TFont read GetFont;
   end;
Im Programm wird z.B. die Font über folgende Funktion geholt:
Delphi-Quellcode:
function TCustomAppServices.GetFont: TFont;
begin
  result:= FFont;
end;
Das Font-Objekt erstelle ich zuvor in der Create-Anweisung von TCustomAppServices...
Delphi-Quellcode:
  TCustomAppServices = class(TupfStandardApplicationServices, ICustomAppServices)
     FFont: TFont;
     function GetValue : integer;
     function GetApplication: TApplication;
     function GetFont: TFont;
     constructor Create;
     destructor Destroy;
  end;
... wobei ich mich gerade frage, ob es denn hier überhaupt eine Create Anweisung gibt,
da im Initialisierungs-Teil des Plug-In Systems "RegisterClass" steht....
Ich werde das mal prüfen

Gruß
Pfoto

mkinzler 14. Dez 2006 22:19

Re: Packages: Objekte der Parent-Application verursachen Feh
 
Existiert auch eine Istanz von TCustomAppServices?

Pfoto 14. Dez 2006 22:22

Re: Packages: Objekte der Parent-Application verursachen Feh
 
Da hast du das richtige angesprochen!
Das war der Fehler!

Dieses PlugIn-System registiert nur eine Klasse,
so dass natürlich meine Create-Anweisung nicht aufgerufen wurde.
Dort hatte ich die Objekte erstellt...
nun wundert mich nichts mehr.

Vielen Dank für den Denk-Anstoß!


Gruß
Pfoto


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz