Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Den konkreten Typ eines Generics ermitteln

  Alt 23. Dez 2010, 23:03
MyList.ClassName Liefert nur den unqualifizierten Klassennamen, also was von mehreren gleichnamigen Typen soll denn nun genommen werden?

Delphi-Quellcode:
function GetConcreteGenericType(AClass: TClass): TRTTIType;
  function ExtractQualifiedName(const AName: string): string;
  var i: integer;
  begin
    i := Succ(Pos('<', AName));
    Result := Copy(AName, i, Pos('>', AName) - i);
  end;

var
  lCTX: TRTTIContext;
begin
  while Assigned(AClass) and (Pos('<', AClass.ClassName) = 0) do
    AClass := AClass.ClassParent;
  if Assigned(AClass) then
    Result := lCTX.FindType(ExtractQualifiedName(AClass.ClassName))
  else
    Result := nil;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  TheType: TRTTIType;
begin
  TheType := GetConcreteGenericType(TMyList);
  if Assigned(TheType) then
    //ShowMessage(TheType.AsInstance.MetaclassType.ClassName)
    ShowMessage(TheType.ToString)
  else
    ShowMessage('nee, hier gibt''s nix zu sehn');
end;
$2B or not $2B
  Mit Zitat antworten Zitat