一个简单问题,谁告诉我哪错了

地平线的光啊 2008-03-09 08:40:37
unit

...

interface

var

K_RepairCode_orders: set of 5..8; 这里定义



然后声明

var

orderIn: boolean;



然后判断:

if order in K_RepairCode_orders then

orderIn:=true

else

orderIn:=false;



当order是5的时候,order还是false



这是怎么搞的啊?应该怎么判断呢?
...全文
76 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
地平线的光啊 2008-03-09
  • 打赏
  • 举报
回复
偶咋不会给分呢。。。,而且只在老式下才能看见回复。先回了,明天来给,饿死了,THANK U
地平线的光啊 2008-03-09
  • 打赏
  • 举报
回复
汗了,我写在var里这样:
K_RepairCode_orders : Set of 5..8
写在const这样
K_RepairCode_orders: =[ 5..8]

我说怎么2样都不对劲

地平线的光啊 2008-03-09
  • 打赏
  • 举报
回复
var
K_RepairCode_orders: set of 5..8; //这只是声明

看到这句,偶值了
lihuasoft 2008-03-09
  • 打赏
  • 举报
回复
如果你非要这样,那就这样写:

var //const亦可,静态的。
K_RepairCode_orders : Set of 5..8 = [5,6,7,8];
地平线的光啊 2008-03-09
  • 打赏
  • 举报
回复
是否可以这样
const
K_RepairCode_orders := [5,6,7,8];

我要把它写在一个满是全局变量的类里
lihuasoft 2008-03-09
  • 打赏
  • 举报
回复
上面的////注意这里 这句判断并赋值,如果按你的写法改,就是这样:

if order in [5,6,7,8] then

orderIn:=true

else

orderIn:=false;
lihuasoft 2008-03-09
  • 打赏
  • 举报
回复
你的写法没错,但是少了一句:赋初值。
var
K_RepairCode_orders: set of 5..8; //这只是声明

需要在适当的地方加一句:

K_RepairCode_orders := [5,6,7,8];


当然,你完全可以不用集合变量,而这样写:

procedure TForm1.Button1Click(Sender: TObject);
var
orderIn: boolean;
Order : Byte;
begin
Order := 5; //测试值
OrderIn := Order in [5,6,7,8];//////注意这里
if OrderIn then showmessage('true') else showmessage('false');
end;
地平线的光啊 2008-03-09
  • 打赏
  • 举报
回复
我的本意很简单,就是判断一个orederIn是否在5,6,7,8内,那我该怎么写呢?数组?
lihuasoft 2008-03-09
  • 打赏
  • 举报
回复
无论你把它声明为全局的,还是局部的,你都要为它赋值。
全局变量所指的内存空间在堆内存上,默认全部是经ZeroMemory处理的
局部变量在栈内存上,初始值是不可预测的随机值

var
K_RepairCode_orders: set of 5..8;

procedure TForm1.Button1Click(Sender: TObject);
var
orderIn: boolean;
Order : Byte;
begin
K_RepairCode_orders := [5,6,7,8];

Order := 5; //测试值
OrderIn := Order in K_RepairCode_orders;
if OrderIn then showmessage('true') else showmessage('false');
end;
地平线的光啊 2008-03-09
  • 打赏
  • 举报
回复
如果我不把它作为全局变量,而是放在要判断的函数里做局部变量就不会有这样的问题了。
lihuasoft 2008-03-09
  • 打赏
  • 举报
回复
全局变量所在内存空间的每个字节,默认初始化为0,也就是nil,对于集合来说,就是空集,(在你赋值之前)

你可以在判断前加一句:K_RepairCode_orders := [5]试试

另外,那句判断赋值语句,可以简写为:

OrderIn := Order in K_RepairCode_orders;

当然,无所谓,每人都有每人的写法。
地平线的光啊 2008-03-09
  • 打赏
  • 举报
回复
当order是5的时候,orderIn还是false

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧