Autor Beitrag
Biergeneral
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

WIN XP
Delphi 7 Ent., Delphi 2007 Ent., C/C++ (Eclipse)
BeitragVerfasst: Sa 08.11.08 16:04 
Hallo,

ist es möglich Typblibliotheken geteilt bei dlls geteilt zu nutzen?

Folgendes Problem:

Ich habe eine Hauptanwendung in die man Zusatzmodule in dll-Form einladen kann. Diese Plugins nutzen gemeinsame Typ-Bibliotheken. Zum einen meine eigenen Typbibliotheken, zum anderen gehts ja schon bei der unit forms los.

Soweit so gut. Allerdings erzeugt sowohl das Hauptprogramm als auch die DLL jeweils eine eigene Addressierungstabelle für alle Methoden, Klassen, Objekte.

Das ist ja an und für sich schon problematisch genug, da Module die mit verschiedenen Version kompiliert wurden, unterschiedlich reagieren können. Das habe ich aber durch eine interne Überprüfung abgefangen.
Das Hauptproblem liegt wo anders. Wenn ich nun Objekte sowohl in Plugin und Hauptanwendung nutze, kann ich keine Typen vergleichen

Im Plugin:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure CreateMainForm(Owner: TComponent);
begin
  Reference := TForm.Create(AOwner)
  // Hier ist jetzt  (Reference is TForm) = true
end;


Jetzt im Hauptprogramm: Hier hol ich mir aus dem Plugin das Hauptformular, also das gerade erzeugte Formular
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TestVariable(Plugin: TPlugin);
begin
  Variable := Plugin.GetMainForm;
  // An dieser Stelle (Reference is TForm) = false
end;

Gibt es da einen geschickten Weg, diese Probleme zu umgehen? ( Ohne ShareMem von Borland ;-) )
Biergeneral Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

WIN XP
Delphi 7 Ent., Delphi 2007 Ent., C/C++ (Eclipse)
BeitragVerfasst: Sa 08.11.08 16:38 
Ich nutze jetzt erstmal Runtime-Packages. Jetzt funktioniert auch die RTTI wieder!

Gibt es aber trotzdem einen besseren Weg um das Problem zu beheben?