字符串类型值如何转换成枚举型?
字符串
 A : String;
 A := '_8';
枚举
 TByteSize = (_5,_6,_7,_8);如何将A中的值转换成TByteSize中的对应值?
另:可否进行如下操作
if a = '_8' then
  TByteSize := 4;

解决方案 »

  1.   

    const
      ByteSizeStr: array[0..3] = ('_5', '_6', '_7', '_8');
    type
      TByteSize = (_5, _6, _7, _8);
    function GetByteSize(s: string): TByteSize;
    var
      i: Integer;
    begin
      for i := 0 to 3 do
        if s = ByteSizeStr[i] then
        begin
          Result := TByteSize(i);
          Exit;
      end;
      raise EException.Create('Error');
    end;
      

  2.   

    字符串转换枚举变量:uses typinfo;typeTServerVariables = (svAUTH_PASSWORD, svAUTH_TYPE, svAUTH_USER);function StrToServerVariable(const Value:String):TServerVariables;beginresult := TServerVariables(GetEnumValue(TypeInfo(TServerVariables),Value));end;function ServerVariableToStr(const Value:TServerVariables):String;beginresult := GetEnumName(TypeInfo(TServerVariables), Ord(Value));end;