Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: Enum-Typ als Parameter übergeben und mit einer Schleife durchgehen

  Alt 23. Aug 2017, 23:20
So in der Art vielleicht:
Delphi-Quellcode:
procedure TForm1.Test<T>;
var
  TypeInfo: PTypeInfo;
  TypeData: PTypeData;
  I: Integer;
  V: T;
begin
  TypeInfo := System.TypeInfo(T);
  Assert(Assigned(TypeInfo) and (TypeInfo^.Kind = tkEnumeration));
  TypeData := System.TypInfo.GetTypeData(TypeInfo);
  for I := TypeData^.MinValue to TypeData^.MaxValue do
  begin
    Move(I, V, SizeOf(T));
    ShowMessage(TRttiEnumerationType.GetName<T>(V));
  end;
end;
bzw.
Delphi-Quellcode:
procedure TForm1.Test<T>;
var
  TypeInfo: PTypeInfo;
  TypeData: PTypeData;
  I: Integer;
  V: T absolute I;
begin
  TypeInfo := System.TypeInfo(T);
  Assert(Assigned(TypeInfo) and (TypeInfo^.Kind = tkEnumeration));
  TypeData := System.TypInfo.GetTypeData(TypeInfo);
  for I := TypeData^.MinValue to TypeData^.MaxValue do
  begin
    ShowMessage(TRttiEnumerationType.GetName<T>(V));
  end;
end;
Da gibt es aber noch diverse Fallstricke glaube ich.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (23. Aug 2017 um 23:23 Uhr)
  Mit Zitat antworten Zitat