Für ein größeres Delphi5 Projekt soll jeder der abzählbar vielen Kunden seine eigene Kunden-BPL bekommen.
Der Kunde 4711 zum Beispiel die Spezial4711.bpl. Die Hauptapplikation kennt die Kundennummer, kann also die richtige BPL mit LoadPackage laden. Die Menge aller von Kunden-BPLs unterstützten Methoden ist bekannt. Nicht alle BPLs implementieren alle Methoden.
Im Hauptprogramm möge stehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| type TKundenBasisClass = class of TKundenBasis; . SpaltenInTabelle := 7; KundenBpl := LoadPackage('Spezial4711.bpl'); AClass := GetClass('TKundenBasis'); with TKundenBasisClass(AClass).Create(Application) as TKundenBasis do SetzeSpaltenanzahl(@SpaltenInTabelle)); |
Nicht alle Kunden-BPL implementieren die Methode SetzeSpaltenanzahl. Eine Klasse mit virtuellen Methoden, TKundenBasis soll zwischengeschaltet werden. Diese Klasse stellt die Summe aller möglichen Methoden virtuell zur Verfügung.
Die Kunden-BPLs, also auch Spezial4711, sind von TKundenBasis abgeleitet.
Ich erhalte nur Zugriff auf die Implementierung der TKundenBasis. Hab' ich ja auch so programmiert!
Wie kann ich Zugriff auf die von TKundenBasis abgeleiteten BPLs erhalten?
Der Klassenname der Kunden-BPLs ist nicht bekannt, die Implementierung (Methodenreihenfolge) ist jedoch identisch mit der TKundenBasis.
Wer muss welchen Klassennamen mit RegisterClass registrieren?
Alles klar?
Beste Grüße, OptiMan