var
   UserPurviewSet : (R,E,D) ;
begin
  UserPurviewSet := CurrentUser.Purview; //CurrentUser.Purview 是从数据库中查到的一个string,这样赋值编译不过去
  case UserPurviewSet of
    R :
    E :
    D :
  else
  end;

解决方案 »

  1.   

    总是有别办法可以解决问题吧?
    比如:
      Case CurrentUser.Purview of
        'R': UserPurviewSet := R;
        ....
      end;楼主,你的UserPurviewSet不是集合,而是枚举型的。
      

  2.   

    uses TypInfo;type
      TUserPurviewSet = (R,E,D);procedure TForm1.Button1Click(Sender: TObject);
    var
      UserPurviewSet: TUserPurviewSet;
      S: string;
    begin
      S := 'D';
      UserPurviewSet := TUserPurviewSet(GetEnumValue(TypeInfo(TUserPurviewSet), S));
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  3.   

    CurrentUser.Purview 是string
    你那样写的case通不过编译
    case 不支持string
    有其它的解决办法吗?CurrentUser.Purview 在数据库中定义的字符串类型
      

  4.   

    lxpbuaa(桂枝香在故国晚秋)的不错
    或者自己写个
    type
    TUserPurviewSet = (R,E,D);procedure TForm1.Button1Click(Sender: TObject);
    var
      UserPurviewSet: TUserPurviewSet;
      S: string;
      function  GetValue(S:String):TUserPurviewSet;
      begin
        if S = 'R' then Result:=R
        else if S = 'E' then Result:=E
        else if S = 'D' then Result:=D;
      end;
    begin
      S := 'D';
      UserPurviewSet := GetValue(S);
      case UserPurviewSet of
      D: showmessage('D');
      E: showmessage('E');
      R: showmessage('R');
      end;
    end;
      

  5.   

    感谢大家
    lxpbuaa(桂枝香在故国晚秋)给出的方法对我认识delphi有很大帮助