Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 13. Jul 2010, 19: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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat