var
b:string;
a:integer;
begin
 b:=radiogroup1.Items.Strings[radiogroup1.Itemindex];
case b of   /*这里出现错误提示ordinal type required/
'语文':a:=1;
'数学':a:=2;
end;
请问该如何解决?

解决方案 »

  1.   

    case 语句中不能用字符串
    var
    b:string;
    a:integer;
    begin
      b:=radiogroup1.Items.Strings[radiogroup1.Itemindex];
      if b = '语文' then a := 1
      else if b = '数学' then a := 2
      else a := 0;
    end;
      

  2.   

    但是我需要分许多种情况,大概有七个,不可能用7个if then 来判断吧,有没有其他方法可以用,?
      

  3.   


    var
    b:string;
    a:integer;
    sl: TStringList;
    begin
      sl := TStringList.Create;
      sl.Add('语文');
      sl.Add('数学');
      .......  b:=radiogroup1.Items.Strings[radiogroup1.Itemindex];
      a := sl.IndexOf(b) + 1;
      sl.Free;
    end;
      

  4.   

    var
      a: integer;
      sl: TStringList;
    begin
      sl := TStringList.Create;
      sl.Add('语文');
      sl.Add('数学');
      .......
      a := sl.IndexOf(radiogroup1.Items.Strings[radiogroup1.Itemindex]) + 1;
      sl.Free;
    end;//你的a是做什么的?