Hallo zusammen,
danke für die Antwort und das Beispiel.
Allerdings hat dies einen Haken: Man muß beim Kompilieren den Klassentyp kennen , hier den TMainDevice oder TSubDevice.
Nur die Klassen sind im Hauptprogramm nicht bekannt beim Kompilieren.
Nochmal zur Erklärung :
Es werden Devicemodule entwickelt, die zur Laufzeit dynamisch als
bpl geladen werden (Pro Devicemodule eine
Bpl) . Die Klassen in dieser
bpl sind aber dem Hauptprogramm zum Zeitpunkt der Kompilierung nicht bekannt.
Also angenommen, man definiert ein neues Devicemodule mit TXDevice als Klasse. TXDevice ist in einer
bpl eingebunden.
Zur Laufzeit wird die
Bpl dynamisch geladen.
Welche
bpl geladen wird ist in einem
Ascii File eingetragen, der die Namen der
bpl's enthält.
Dies geschieht alles ohne das Hauptprogramm neu zu kompilieren.
Wie kann ich nun in dem untenstehenden Beispiel TXDevice erzeugen ?
Wie kann ich also eine Klasse erzeugen, wenn ich diese nicht kenne ?
Oder sollte man hier ganz anders vorgehen ?
In dem untenstehenden Beispiel wäre dies dann so,wenn man bei abstraken Methoden bleibt :
Delphi-Quellcode:
procedure Test2;
var
MyDevice : TBaseDevice;
begin
// TMainDevice ist hier nicht bekannt, es kann auch TXDevice
// sein oder anders.
MyDevice := TMainDevice.Create;
try
DoSomething( MyDevice ); // -> MsgBox mit 'MainDevice initialisiert'
finally
MyDevice.Free;
end;
Gruß
Gargano