- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是为了确保我没有忽略一个奇怪的边缘情况,因为我已经发现了一个产生它的情况,但我想确保:
是否有任何 Delphi 版本可以发出 RTTI,其中包含 tkUnknown
为 TTypeKind 的类型?
如果是这样:
在当前的 Delphi XE5 RTL 中,我唯一能找到处理 tkUnknown
的地方是 TValue ,但我没有在 RTL 中找到设置包含 TypeInfo 的 TValue
的代码路径。 tkUnknown
为 Kind .
最佳答案
答案是否定的。其他任何事情都会是编译器中的错误。
tkUnknown
表示没有可用的类型信息,这可能是不连续的枚举和不从零开始的枚举的情况(如 Barry here 所解释的)以及很久以前的某些类型(如 Real48
)。
它也由 TValue.Kind
返回当TValue.IsEmpty
是真的。 (自 XE2 以来,据我所知,在它持有 nil 引用类型的情况下,它也可以返回 True,这是一个错误)。
当您检索不包含类型信息的内容(例如没有类型信息的类型的字段、属性或参数)的 RTTI 时,您的 RTTI 信息不完整。 TRttiField.FieldType
和TRttiProperty.PropertyType
在这些情况下返回 nil 以及 TRttiMethod.GetParameters
返回的数组不完整。
虽然可以调用TValue.Make<T>
对于没有类型信息的类型,您将无法对此做太多事情,因为它的 TypeInfo 将为零。编译器显然在 E2134 周围工作并将 nil 传递给 TValue.Make
。因此TValue.Kind
会说tkUnknown
.
关于delphi - 是否有任何 Delphi 版本可以发出包含 tkUnknown 的 RTTI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22112367/
只是为了确保我没有忽略一个奇怪的边缘情况,因为我已经发现了一个产生它的情况,但我想确保: 是否有任何 Delphi 版本可以发出 RTTI,其中包含 tkUnknown 为 TTypeKind 的类型
我是一名优秀的程序员,十分优秀!