![]() |
BPL- Packages zur Laufzeit laden-Typecasting geht nicht ganz
Hallo!
Ich beschäftige mich im Moment mit den BPL- Packages, sowie dem dynamischen Einbinden von in BPLs ausgelagerte Klassen. Dazu habe ich jetzt eine Frage, bei der ich absolut nicht weiterkomme. Ich habe in meinem Hauptprogramm eine Klasse:
Delphi-Quellcode:
So und mein Ziel ist es jetzt, von TCustomConnection abgeleitete Klassen in BPLs zu packen. Dabei führen die abgeleiteten Klassen keine neuen Methoden oder Properties ein, sondern überschreiben nur bereits in der TCustomConnection bekannte Methoden und Properties. Wenn ich jetzt im Hauptprogramm (was selber nur die Klasse TCustomConnection kennt) die entsprechende abgeleitete BPL-Klasse lade, möchte ich die Methoden der Abgeleiteten Klasse ausführen, nicht die von TCustomConnection.
type
TCustomConnection = class(TComponent) private Function GetDescription: string; public Property Description: string read GetDescription; end; implementation {...} function GetDescription: string; begin Result := 'Das ist die Basisklasse'; end; Im Hauptprogramm hole ich mir die Klasse auf folgende Weise, wobei die BPL zu dem Zeitpunkt bereits erfolgreich in den Speicher geladen ist.
Delphi-Quellcode:
Das Problem leigt jetzt ganz einfach darin, dass ich für Connection.Description 'Dies ist die Basisklasse' angezeigt bekomme und nicht den Text, den ich in der Nachfolgeklasse vorgebe.
Procedure LoadClass(ClassName: string; var Connection: TCustomConnection);
var AClass: TPersistenClass; begin AClass := GetClass(HelpComponent.ConnectionComponentName); Connection := TConnectionClass(AClass).Create(self) as TCustomConnection; // TConnectionClass = class of TCustomConnection end; Auf welchem Weg komme ich aber da hin? Das Problem liegt halt darin, dass das Hauptprogramm selber die abgeleitete Klasse zur Entwurfszeit nicht kennt. Ich kann daher hierarchisch gesehen höchstens bis TCustomConnection gehen, oder? Vielen Dank und beste Grüße alias5000 PS: Die Basisklasse TCustomConnection ist sowohl im Package als auch in der Hauptanwendung bekannt |
Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht
Zitat:
Uli. |
Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht
..
Zitat:
Gruß onlinekater |
Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht
In dem Fall bekomme ich dann einen AbstractError, an der Stelle, an der ich in der Hauptanwendung ein Connection.Description ausführe
|
Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz