• Как приравнять переменную string к значению свойства?

    @n-fom
    uses System.TypInfo;
    
    type TEnumConverter = class
    public
      class function EnumToInt<T>(const EnumValue: T): Integer;
      class function EnumToString<T>(EnumValue: T): string;
      class function GetAs<T>(pValor: String): T;
    end;
    
    implementation
    
    class function TEnumConverter.EnumToInt<T>(const EnumValue: T): Integer;
    begin
      Result := 0;
      Move(EnumValue, Result, sizeOf(EnumValue));
    end;
    
    class function TEnumConverter.EnumToString<T>(EnumValue: T): string;
    begin
      Result := GetEnumName(TypeInfo(T), EnumToInt(EnumValue));
    end;
    
    class function TEnumConverter.GetAs<T>(pValor: String): T;
    var
      Tipo: PTypeInfo;
      Temp: Integer;
      PTemp: Pointer;
    begin
       Tipo := TypeInfo(T);
       Temp := GetEnumValue(Tipo, pValor);
       PTemp := @Temp;
       Result := T(PTemp^);
    end;
    Ответ написан
    1 комментарий