Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: System.TypeInfo Enumeration

  Alt 10. Dez 2021, 09:48
Solange ich die Kontrolle über die Enums habe, verwende ich dann folgende Herangehensweise:
Delphi-Quellcode:
type
  TEnum = (eOne, eTwo, eThree, eFour);
  TEnumHelper = record helper for TEnum
  public
    function GetAsInteger: Integer;
    procedure SetAsInteger(const Value: Integer);
    property AsInteger: Integer read GetAsInteger write SetAsInteger;
  end;

function TEnumHelper.GetAsInteger: Integer;
begin
  Result := Ord(Self) + 1;
end;

procedure TEnumHelper.SetAsInteger(const Value: Integer);
begin
  Self := TEnum(Value - 1);
end;
In Fällen, wo die Integer-Werte Bestandteil eines externen Records sind, kann man das dann so lösen:
Delphi-Quellcode:
type
  TMyRecord = record
  private
    { ein paar Felder }
    FEnumInt: Integer; // oder Byte, Word...
    { noch ein paar Felder }
    function GetEnum: TEnum;
    procedure SetEnum(const Value: TEnum);
  public
    property Enum: TEnum read GetEnum write SetEnum;
  end;

function TMyRecord.GetEnum: TEnum;
begin
  Result.AsInteger := FEnumInt;
end;

procedure TMyRecord.SetEnum(const Value: TEnum);
begin
  FEnumInt := Value.AsInteger;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat