vielen dank für eure antworten.
interface geht wie schon gesagt wurde nicht mit class procedures/functions, hatte ich auch probiert
basisklasse mit abstrakter methode ist z.z. auch meine lösung für das problem
ich bin mir aber nicht sicher, ob das nicht irgendwann nachteilig sein könnte
so sieht es atm aus:
Delphi-Quellcode:
type
TFBase = class(TObject)
public
class function Get_irgendwas: String; virtual; abstract;
end;
TF1 = class(TFBase)
class function Get_irgendwas: String; override;
end;
TF2 = class(TFBase)
class function Get_irgendwas: String; override;
end;
Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
helper: TObject;
z1: TF1;
z2: TF2;
begin
z1 := TF1.Create;
z2 := TF2.Create;
helper:= z1;
FreeAndNil(z1);
FreeAndNil(z2);
Writeln((helper as TFBase).Get_irgendwas)
end;
{ TF2 }
class function TF2.Get_irgendwas: String;
begin
result := 'tf2';
end;
{ TF1 }
class function TF1.Get_irgendwas: String;
begin
result := 'tf1';
end;
jetzt noch eine frage: ich lasse die tobject-variable helper auf das objekt im speicher zeigen, auf das z1 zeigt. danach gebe ich z1 frei. dadurch müsste doch helper erstmal auf nix zeigen, aber auch nicht nil sein. dann caste ich helper als tfbase und er ruft die tf1.get_irgendwas methode auf.
da würde ich mich dafür interessieren, woher er noch weiß, dass es ein tf1-objekt ist und ob es eine schönere möglichkeit gibt, so ein objekt zu erzeugen ^^