gpt4 book ai didi

delphi - 从集合中初始化无类型常量

转载 作者:行者123 更新时间:2023-12-03 15:54:48 30 4
gpt4 key购买 nike

我正在将集合类型和数字编码到(32 位)标签属性中。从标签中检索集合非常简单:TDaySet(Byte((tag and $ff000000) shr 24))。但如何设置包含此编码集信息的常量呢?

const
FRED_SCHEDULE = ID_FRED or (Byte([Monday, Wednesday]) shl 24);

这不能编译。实际的错误是“无效的类型转换”,但我认为根本问题是我试图从类型化常量初始化非类型化常量。

有谁有更好的主意吗?

最佳答案

首先,[Monday, Wednesday] 不是类型常量。它不是类型常量,因为您没有声明类型。类型常量是

const
Days: TSetOfDays = [Monday, Wednesday];

但是,如您所知,您无法从类型常量中创建真正的常量。而且您不能指望编译器知道如何解释表达式中的[Monday, Wednesday],因为您没有声明类型。

因此,您不能使用集合表示法来声明真正的常量,因为只有在指定集合的​​类型时才能使用集合表示法。这意味着您尝试做的事情可能实际上是不可能的。我的意思是,你可以这样写:

const
FRED_SCHEDULE = ID_FRED
or ((1 shl ord(Monday) or 1 shl ord(Wednesday)) shl 24);

但这样做就太疯狂了。

关于delphi - 从集合中初始化无类型常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17276175/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com