procedure TForm1.Button1Click(Sender: TObject);vars,r:string;begincase s of 'K' : r:='A';'L' : r:='B';'M' : r:='C';'N' : r:='D';'O' : r:='E';'P' : r:='F';'Q' : r:='G';'R' : r:='H';'S' : r:='I'elser:='X';end;end;明明正确的语句,为什么编译时出现如下错误:[Error] main.pas(116): Ordinal type required;(该句指向case s of)
[Error] main.pas(117): Incompatible types: 'Integer' and 'Char'
[Error] main.pas(118): Incompatible types: 'Integer' and 'Char'
……

解决方案 »

  1.   

    因为case 只能用一些序数来表示例如var s:integer;case s of 0 : r:='A';1 : r:='B';2 : r:='C';
      

  2.   

    string类型不能case,都换成char
      

  3.   

    case 不能用string类型
    改成char
    procedure TForm1.Button1Click(Sender: TObject);vars,r:char;begincase s of 'K' : r:='A';'L' : r:='B';'M' : r:='C';'N' : r:='D';'O' : r:='E';'P' : r:='F';'Q' : r:='G';'R' : r:='H';'S' : r:='I'elser:='X';end;end;
      

  4.   

    这样改:
    procedure TForm1.Button1Click(Sender: TObject);vars,r:string;begincase s[1] of 'K' : r:='A';'L' : r:='B';'M' : r:='C';'N' : r:='D';'O' : r:='E';'P' : r:='F';'Q' : r:='G';'R' : r:='H';'S' : r:='I'elser:='X';end;end;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);var  s, r: string;begin
      s:=Edit1.Text;
      case s[1] of    'K': r := 'A';    'L': r := 'B';    'M': r := 'C';    'N': r := 'D';    'O': r := 'E';    'P': r := 'F';    'Q': r := 'G';    'R': r := 'H';    'S': r := 'I'  else    r := 'X';  end;
          ShowMessage(r);
    end;
      

  6.   

    string类型不能case,
    case integer