Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.229 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie kann ich den Klassentyp beim Create variabel lassen?

  Alt 13. Jul 2010, 18:35
Delphi-Quellcode:
a: TMyclass1;
b: TMyclass2;

begin
a := TMyclass1(CreateInstance(TMyclass1));
...
b := Tmyclass2(CreateInstance(Tmyclass2));

// bzw.
a := CreateInstance(TMyclass1) as TMyclass1;
...
b := CreateInstance(Tmyclass2) as Tmyclass2;
Ob nun als String oder Klasse, ist hierbei egal.
PS: Bei der Klassenvariante sollte man den Constructor besser Virtual machen.

oder als typlosen Parameter:
Delphi-Quellcode:
procedure CreateInstance(mcc: TMyClassClass; out Result);
begin
  TMyClass(Result) := mcc.Create(...);
end;

procedure CreateInstance(MyClass: String; out Result);
begin
  case IndexText(MyClass, ['TMyClass1', 'TMyClass2']) of
    0: TMyClass(Result) := TMyClass1.Create(...);
    1: TMyClass(Result) := TMyClass2.Create(...);
    else TMyClass(Result) := nil; // oder eine Exception auslösen
  end;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat