Liebe Kameraden,
Ich habe eine Vorfahrenklasse für eine Client-Server-Komponente erstellt. Von dieser leite ich dann weitere Komponenten entsprechend dem Einsatzzweck ab. Hierbei stoße ich auf folgendes Problem ( Der Einsatzweck der Komponente ist irrelevant, es geht um die abstrakte Methode ):
Meine Vorfahrenklasse (auf das Nötigste reduziert ):
Delphi-Quellcode:
unit uCustomClient;
interface
uses [...], uMKLANConstants;
TMKCustomClient =
class(TComponent)
[...]
protected
procedure DoOnServerCommand(ServerCommand : TSrvCmd; Data : TStream);
virtual;
abstract;
// <- Um das "TSrvCmd" geht es
[...]
end;
Das TSrvCmd ist in der o.g.
Unit "uMKLANConstants" definiert:
Delphi-Quellcode:
type
TSrvCmd = (Command1, Command2);
So, nun möchte ich das Set TSrvCmd in der abgeleiteten Komponente (und NUR in dieser!) erweitern um die entsprechenden Funktionen zu implementieren, z.B.:
Delphi-Quellcode:
Type TSrvCmd = (Command1, Command2, Command3, Command4, Command5);
TMKChatClient = class(TMKCustomClient)
[...]
protected
procedure DoOnServerCommand(ServerCommand : TSrvCmd; Data : TStream); override;
[...]
end;
Jetzt meckert mir der Compiler, dass die Definitionen von DoOnServerCommand unterschiedlich sind. Mir ist absolut klar, dass es sich für den Compiler um zwei verschiedene "inkompatible" Sets handelt, da sie in verschiedenen Units deklariert wurden. Die Fehlerursache ist mir also klar, ABER wie kann ich das geplante umsetzen? Natürlich könnte ich in der o.g.
Unit das Set "unendlich" erweitern, allerdings hätte ich dann bei vielen abgeleiteten Komponenten "unnötige" Einträge in TSrvCmd drin - und das möchte ich der Übersicht halber eben vermeiden.