AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Package: Prozedur ausführen mal funktioniert es mal nicht

Package: Prozedur ausführen mal funktioniert es mal nicht

Ein Thema von napsterxx · begonnen am 26. Apr 2009 · letzter Beitrag vom 29. Apr 2009
 
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#1

Package: Prozedur ausführen mal funktioniert es mal nicht

  Alt 26. Apr 2009, 12:22
Also wie bereits in vorherigen Threads erwähnt bastel ich gerade ein Pluginsystem. Dieses Pluginsystem funktioniert grob wie folgt:

Plugins und Kern der Anwedung liegen als bpl vor - eine EXE Datei welche den Kern läd und anzeigt.

Kern:
* eine einfache Form mit 2 Buttons.

Plugin
* TPlugin ist eine selbst erstellte Klasse welche von einer anderen eigenen Klasse abgeleitet wurde
TPlugin = class(TPluginClass)
* exportiert die Funktion LoadPlugin(var Plugin: TPlugin);


Kern wird angezeigt und beim starten die Plugins geladen, sprich die Methode LoadPlugin wird ausgeführt.
Wie zu erkennen ist erhalte ich nach dem Laden des Plugins eine Variable von seiner Klasse (welche registriert wurde). Diese Klasse hat Eigenschaften wie Author, Datum etc., aber auch Funktionen wie Init(); und Exec();
Nach dem Aufruf von LoadPlugin rufe ich nun Init des Plugins auf, in welcher Prozedur die Eigenschaften wie Author etc. befüllt werden, anschließend lasse ich mir den Author via. ShowMessage() zurück geben. Dies Funktioniert alles Problem los.
Das Plugin welches ich durch LoadPlugin erhalten habe lege ich in einem Array ab welches bestandteil des s.g. PluginManager's ist.
Das Komische ist nur ich kann nicht im Nachhinein eine Funktion/Prozedur eines Plugins aufrufen. Sprich:
PluginManager.Plugin[0].Plugin.Init(); funktioniert nicht - hingegen funktioniert aber folgendes:
ShowMessage( PluginManager.Plugin[0].Plugin.Author ); Fehlermeldung beim Aufrufen im Nachhinein:
Zitat:
---------------------------
Debugger Exception Notification
---------------------------
Project Main.exe raised exception class EAccessViolation with message 'Access violation at address 009C2616 in module 'Kernel.bpl'. Read of address 009D1D04'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 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