DELPHI中的CASE用不了,请教(20分)

  • 主题发起人 主题发起人 sjloop
  • 开始时间 开始时间
S

sjloop

Unregistered / Unconfirmed
GUEST, unregistred user!
请教CASE的用法:我想把一个文本框的内容作为判断条件,然后输出相应的值,如下:
case edit1.text of
'aa':showmessage('ok');
'bb':showmessage('no');
end;
但是它提示出错,那么这个CASE语句应该怎么写啊??(虽然用IF可以代替)
 
Delphi的Case不能用字符串
 
不能这么写
只能用if了
因为,case 后面的常量 只能是 序数类型(integer,byte 这类的),字符串不行,
请参看 《object pascal 参考》
 
可以用枚舉,你看有沒必要專門定義一個枚舉類型
 
uses StrUtils;

case AnsiIndexStr(Edit1.Text, ['aa', 'bb']) of
0: Showmessage('ok');
1: Showmessage('no');
end;
 
也可以把所有的要判断的字符串搞到一个TStringlist
case Stringlist.indexof(str) of
0:%%%%%%
1:#####
end;
 
例子一:说明 case X of 中的 X 可以是Integer
case I of
1..5: Caption := 'Low';
6..9: Caption := 'High';
0, 10..99: Caption := 'Out of range';
else
Caption := '';
end;

例子二:说明 case X of 中的 X 可以是枚举类型
case MyColor of
Red: X := 1;
Green: X := 2;
Blue: X := 3;
Yellow, Orange, Black: X := 0;
end;
 
delphi 中的CASE 必须为序数型
使用诸如字符串这样的非序数类型作选项是非法的
 
后退
顶部