Zitat von
Elvis:
Sorry, aber du musst schon die Deklaration des Interfaces sowie die Signaturen aller Methoden zeigen, denen du das Interface übergibst.
Erst dann kann man erahnen was schief geht.
Kleiner Schuss ins Blaue. Vllt klärtsich deinProblem damit, aber es gibt die auf jeden Fall einen Hinweis welche Infos wir brauchen.
Bei Methoden ist generell die Signatur WICHTIG, genauso wo/ob du die Interface-Referenz ablegst.
Erst mal danke für die Tips.
Ich verwende das Hydra-Plugin von Remobjects.
Das Interface ist für alle Module gleich und so definiert :
Delphi-Quellcode:
type
{ Database }
IAutPluginInterface = interface(IHYVisualPlugin)
['{E22DF92D-9B38-4DA0-BD05-0AD08E7238D2}']
procedure InitDatabase(System, Data : TIBCConnection; IniFileName : string; Style : integer);
procedure InitData(Kommando : Char; RID,PID: string; PRID: Integer);
procedure GetMetrics(out Width,Height : integer);
Function GetStatus(Kommando : Char): integer;
Function GetInfo(Kommando : Char) : string;
end;
Das Problem war wohl, das ich in der
dll nicht visible Komponenten in einem TDataModule als Container gehalten habe.
Das scheint, insbesondere beim Release, Probleme zu bereiten.
Verwende ich als Container eine Form, dann habe ich wesentlich weniger Probleme.
Das Programm habe ich jetzt so geändert, das ich statt Server Connection Servername und Datenbankname übernehme und
in der
dll eine neue Connection anlege. (Bei Firebird ist das ja im Hinblick auf die Anzahl der Lizenzen egal.)
So richtig glücklich macht mich dieses Plugin-System aber nicht.
Ich muss alle Module, welche ein Registerclass enthalten, als Laufzeit -
bpl bereitstellen.
Versuchsweise habe ich jetzt das gesamte Reportsystem des Programms in einen
Com-Server ausgelagert.
Ich bin noch am Testen habe aber noch keine Probleme finden können und diese Lösung macht eigentlich einen guten Eindruck.
Gruß
Peter