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
Antwort Antwort
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
napsterxx

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

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 26. Apr 2009, 17:04
Kommt schon, es gibt in der DP wirklich kluge Köpfe - äußert euch doch bitte mal
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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.852 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 26. Apr 2009, 17:09
Du willst kluge Köpfe in eine Datenbank Packen
Markus Kinzler
  Mit Zitat antworten Zitat
napsterxx

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

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 26. Apr 2009, 17:40
*DP!
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
napsterxx

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

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 28. Apr 2009, 14:52
Ist irgendjemand hier?
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
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 28. Apr 2009, 16:05
Quelltext bitte. Deine Beschreibung ist ja ganz gut. Wie es aber zu einer Zugriffsverletzung kommt, beschreibt, glaube ich, der Quelltext am besten...
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
napsterxx

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

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 28. Apr 2009, 17:11
Code folgt in Kürze komplett
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
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 28. Apr 2009, 18:49
Zitat:
[DCC Fehler] Kernel.pas(46): E2003 Undeklarierter Bezeichner: 'PluginCount'
Ich hatte an etwas gedacht, bei dem ich dann nur noch F9 zu drücken brauche. -- Falsch gedacht. Jetzt habe ich mir selbst etwas um Deine Dateien von oben zusammengeschustert. Neben diesen Ergänzungen habe ich nur eine Änderung vorgenommen:

Delphi-Quellcode:
procedure TeConPluginManager.LoadPlugin(DLLName: String);
{ ... }
  finally
    UnloadPackage(Module);
  end else
{ ... }
Delphi-Quellcode:
procedure TeConPluginManager.LoadPlugin(DLLName: String);
{ ... }
  finally
// UnloadPackage(Module);
  end else
{ ... }
Ich kann keinen Fehler feststellen. Execute zeigt ein hübsches kleines Fenster...

Du darfst das Modul natürlich erst dann entladen, wenn Du nichts mehr daraus benutzt. Das Aukommentieren ist daher nur die halbe Miete, es muss dafür noch der richtige Platz beim Programmbeenden gefunden werden.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
napsterxx

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

Re: Package: Prozedur ausführen mal funktioniert es mal nich

  Alt 29. Apr 2009, 13:01
Danke, das war der Fehler
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 04:00 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