Jens Köhler
2017-01-13 15:14:39 UTC
Hallo,
Ich suche einen Weg, wie ich von einer Klasse u. einem Objekt
einen Text geliefert bekomme, so wie Classname, nur mit einem
eigenen Text.
Wenn ich eine Klassenfunction schreibe, kriege ich den richtigen Text
aus der Klasse. Wenn ich ein Objekt eine abgeleiteten Klasse in einer
Variablen vom Basistype speichere kriege von Objekt nur den Text vom
Basisobjekt.
Wenn ich eine normale überladene Funtion schreibe, funktioniert es
vom Objekt aber natürlich nicht von der Klasse.
Gibt es einen Weg, das zu lösen ohne in jeder Klasse 2 Funktionen
zu schreiben die dann ja auch unterschiedliche Namen brauchen?
D5 unter WinXP
Jens
type
TBaseClass = class
private
class function GetText : string;
function GetText2 : string; virtual;
end;
TDingsClass = class(TBaseClass)
class function GetText : string;
function GetText2 : string; override;
end;
class function TBaseClass.GetText : string;
begin
Result := 'Base';
end;
function TBaseClass.GetText2 : string;
begin
Result := 'Base';
end;
// ##
class function TDingsClass.GetText : string;
begin
Result := 'Dings';
end;
function TDingsClass.GetText2 : string;
begin
Result := 'Dings';
end;
var
Obj : TBaseClass;
begin
s := TDingsClass.GetText; // liefert Dings
Obj := TDingsClass.Create;
s := Obj.GetText; // liefert Base soll Dings sein
s := Obj.ClassName; // liefert TDingsClass
s := Obj.GetText2; // liefert Dings
Ich suche einen Weg, wie ich von einer Klasse u. einem Objekt
einen Text geliefert bekomme, so wie Classname, nur mit einem
eigenen Text.
Wenn ich eine Klassenfunction schreibe, kriege ich den richtigen Text
aus der Klasse. Wenn ich ein Objekt eine abgeleiteten Klasse in einer
Variablen vom Basistype speichere kriege von Objekt nur den Text vom
Basisobjekt.
Wenn ich eine normale überladene Funtion schreibe, funktioniert es
vom Objekt aber natürlich nicht von der Klasse.
Gibt es einen Weg, das zu lösen ohne in jeder Klasse 2 Funktionen
zu schreiben die dann ja auch unterschiedliche Namen brauchen?
D5 unter WinXP
Jens
type
TBaseClass = class
private
class function GetText : string;
function GetText2 : string; virtual;
end;
TDingsClass = class(TBaseClass)
class function GetText : string;
function GetText2 : string; override;
end;
class function TBaseClass.GetText : string;
begin
Result := 'Base';
end;
function TBaseClass.GetText2 : string;
begin
Result := 'Base';
end;
// ##
class function TDingsClass.GetText : string;
begin
Result := 'Dings';
end;
function TDingsClass.GetText2 : string;
begin
Result := 'Dings';
end;
var
Obj : TBaseClass;
begin
s := TDingsClass.GetText; // liefert Dings
Obj := TDingsClass.Create;
s := Obj.GetText; // liefert Base soll Dings sein
s := Obj.ClassName; // liefert TDingsClass
s := Obj.GetText2; // liefert Dings