AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi BPL- Packages zur Laufzeit laden-Typecasting geht nicht ganz
Thema durchsuchen
Ansicht
Themen-Optionen

BPL- Packages zur Laufzeit laden-Typecasting geht nicht ganz

Ein Thema von alias5000 · begonnen am 17. Aug 2006 · letzter Beitrag vom 18. Aug 2006
Antwort Antwort
Benutzerbild von alias5000
alias5000

Registriert seit: 10. Sep 2005
Ort: Heilbronn
268 Beiträge
 
#1

BPL- Packages zur Laufzeit laden-Typecasting geht nicht ganz

  Alt 17. Aug 2006, 16:09
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:
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;
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.

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:
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;
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.

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
Im Interesse der Purierung des germanischen Ideoms ist es opertum den immensen Usus peregrieder Verben auf ein Minimum zu reduzieren.
--> www.lanchat2.de <---
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#2

Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht

  Alt 17. Aug 2006, 17:16
Zitat von alias5000:
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.
Mach GetDescription virtuell.

Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.879 Beiträge
 
Delphi 12 Athens
 
#3

Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht

  Alt 18. Aug 2006, 09:23
..
Zitat von uligerhardt:
Mach GetDescription virtuell.
und am besten in der Basisklasse auch noch abstract, sodaß jeder Nachfahre auch garantiert die gewünsachte Methode selbst implementiert.


Gruß

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Benutzerbild von alias5000
alias5000

Registriert seit: 10. Sep 2005
Ort: Heilbronn
268 Beiträge
 
#4

Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht

  Alt 18. Aug 2006, 10:50
In dem Fall bekomme ich dann einen AbstractError, an der Stelle, an der ich in der Hauptanwendung ein Connection.Description ausführe
Im Interesse der Purierung des germanischen Ideoms ist es opertum den immensen Usus peregrieder Verben auf ein Minimum zu reduzieren.
--> www.lanchat2.de <---
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#5

Re: BPL- Packages zur Laufzeit laden-Typecasting geht nicht

  Alt 18. Aug 2006, 12:09
Zitat von alias5000:
In dem Fall bekomme ich dann einen AbstractError, an der Stelle, an der ich in der Hauptanwendung ein Connection.Description ausführe
Du musst die Routine dann natürlich auch in den abgeleiteten Klassen überschreiben. Dabei "override" nicht vergessen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:57 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