Du hast in jedem Knoten in obigem Code ein Element des Typs TDaten. Dieses änderst du einfach in TDatenBasis um und definierst wie folgt:
Delphi-Quellcode:
type
TDatenBasis = class
public
// Eine Beispielmethode
procedure Work; virtual; abstract;
end;
In den Rumpf der Klasse fügst du noch die Methoden ein, die du zum arbeiten brauchst. Da du nicht weißt, mit welchen Typ von Daten du arbeiten wirst, definierst du die Methoden als
abstract, also ohne Code. Den Code musst du später schreiben, wenn du deine Klasse, z.B. TInteger von der Basisklasse ableitest:
Delphi-Quellcode:
type
TInteger =
class(TDatenBasis)
private
fDaten: Integer;
public
procedure Work;
override;
end;
// Weiteres in der Unit
procedure TInteger.Work;
begin
// Mache was mit fDatan oder anderen Dingen
end;
Weil du in der Basisklasse bereits alle Methoden, die du später brauchst, definiert hast, kannst du ohne umständlicher und eventuell gefährliche Typecasts mit deinen String-, Integer-, Char-, Floating-Point-Klassen usw. arbeiten. Je nach belieben und dem angestrebten Funktionsumfang kannst du beliebig viele dieser Methoden hinzufügen.
PS: Hagens Methode ist viel einfacher. Du deklarierst dein Feld nicht als TDaten, sondern als
Variant und kannst mit diesem Variant arbeiten, als wäre es gleichzeitig Integer, String, Floating-Point-Zahl, Zeichen...