要求完成如下功能:希望能执行语句3.
AA:='ABC';
case AA of
 'AAA':语句1;
 'AAB':语句2;
 'ABC':语句3;
 end;

解决方案 »

  1.   

    不可以的,C#可以支持这样,Delphi只允许Ordinal类型。
      

  2.   

    不能为STRING,但是可以用IF语句来解决
      

  3.   

    Delphi又不是VB啊,不同的语言又不同的规定!
      

  4.   

    var 
        SelectStrings: TStringList; 
      ... 
      
      { Initialization } 
        SelectStrings := TStringList.Create; 
        SelectStrings.Add('First');       (*1*) 
        SelectStrings.Add('Second');      (*2*) 
        SelectStrings.Add('Third');       (*3*) 
      ... 
      
      { Use it } 
      
        case SelectStrings.IndexOf(sPassedString) of  (*4*) 
          0: //First 
            begin 
             <do something> 
            end; 
          1: //Second 
            begin 
             <do something> 
            end; 
          2: //Third 
            begin 
             <do something> 
            end; 
        end; 
      ... 
      { Finalization } 
        SelectStrings.Free; 
      
      上面是大小写敏感的比较,如果要对大小写不敏感则改用下面的比较方法:
      
        SelectStrings.Add(AnsiUpperCase('First'));       (*1*) 
        SelectStrings.Add(AnsiUpperCase('Second'));      (*2*) 
        SelectStrings.Add(AnsiUpperCase('Third'));       (*3*) 
      
        case SelectStrings.IndexOf(AnsiUpperCase(sPassedString)) of  (*4*) 
      
      (注意:不要使用 UpperCase, 应使用 AnsiUpperCase, 否则你的程序将在国际化中工作不正常。)
     
     
      

  5.   

    case 只能用与那些有序类型,字符串是不能用case的,比如数字123456,
    或abcdef二十六个字母,或者枚举类型。
    你这种情况只能用
    if AA='AAA' then
      语句1
    else if AA='AAB' then
      语句2
    else if AA='ABC' then
      语句3;