集合类型在使用过程中遇到的问题?

bubble 2001-08-10 04:14:12
我的程序代码如下:
type
day=set of '0'..'9';

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
daysearch:day;
begin
if not (key in daysearch) then key:=#0;
end;

为什么当程序运行时,我在eidt框中只能输入 3 其它的均无法输入,请各位仁兄帮忙看看到底错在什么地方。谢谢
...全文
65 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chechy 2001-08-20
  • 打赏
  • 举报
回复
daysearch没有被初始化,里面是内存垃圾。
难道编译器没有产生警告吗?
bubble 2001-08-20
  • 打赏
  • 举报
回复
to wangxjlaohu(王老虎):
我的代码错在何处呢?
chechy 2001-08-20
  • 打赏
  • 举报
回复
你只是定义了类型,类型的东西没有义务给你初始化。比如你定义了一个Int,你认为它会给你初始化成0吗?在类里面可以,但是在函数里面,那个Int就是垃圾。
记住,类型和值是两码事。类型是定义了数据的一个范围和规范,而值才是具体的东西。
具体赋值是
daysearch := ['0'..'9'];
bubble 2001-08-20
  • 打赏
  • 举报
回复
to chechy(chechy):
难道还要对daysearch进行初始化吗?我在前面不是定义了集合类型吗?
要对daysearch进行初始化,该怎样做?
wangxjlaohu 2001-08-10
  • 打赏
  • 举报
回复
建议你讲代码改为
if not (key in ['0'..'9', #8]) then key:=#0;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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