起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 149|回复: 4

【结贴】[请求] 使用 IN 的 问题

[复制链接]
发表于 2007-11-15 14:50:21 | 显示全部楼层 |阅读模式
代码:
if DataGrid.FocusedField.Index in [9,18,27,36,55,64,73,82] then
begin
///
end;

问题就出在那个 in 那里,数值到55,64,73,82都不会进入判断,为什么会这样?难道大于50都不能算入in中间?
回复

使用道具 举报

 楼主| 发表于 2007-11-15 14:59:05 | 显示全部楼层
55可以进,64就死活不行....
回复 支持 反对

使用道具 举报

发表于 2007-11-15 15:10:57 | 显示全部楼层
http://bbs.justep.com/forum.php? ... ighlight=delphi.net
19、集合类型的限制
在Delphi.Net语言中集合类型只能以如下方式定义,即set of后面跟枚举类型,如:
TEnum = (Monday, Tuesday, Wednesday, Thursday, Friday);
TEnumSet = set of TEnum;

另外,Delphi.Net语言中的集合只能容纳64个元素。在内部,集合是把元素按单独的位存储的,集合中只能是序数类型,这使得超过64的序数值无法存储到集合中。如下代码将编译不过:
if c in ['a', 'b', 'c'] then
  …
这是因为Ord('a') > 90,超过了64,所以无法存储到集合。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-15 15:13:55 | 显示全部楼层
..........
只能一路or下去了
if (DataGrid.FocusedField.Index in [9,18,27,36,55]) or (DataGrid.FocusedField.Index=64) or (DataGrid.FocusedField.Index=73) or(DataGrid.FocusedField.Index=82) then
  begin
///
end;
回复 支持 反对

使用道具 举报

发表于 2007-11-16 09:04:18 | 显示全部楼层
可以用case 呀
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-30 14:29 , Processed in 0.035716 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表