delphi – TCustomAttribute – “预期的常量表达式”编译错误
给出以下代码段:
type MyIntf = interface ['{C6184693-663E-419F-B2DA-4DA1A0E33417}'] procedure Foo; end; InvisiblePropInterfaces = class(TCustomAttribute) private FGUIDS: array of TGUID; public constructor Create(const GUIDS: array of TGUID); end; [InvisiblePropInterfaces([MyIntf])] // <-- Constant expression expected error TMyClass = class(TInterfacedObject,MyIntf) procedure Foo; end; 为什么编译器认为这不是一个常量表达式? ... var I: InvisiblePropInterfaces; begin I:= InvisiblePropInterfaces.Create([MyIntf]); ... 解决方法
attributes documentation的相关部分是这样的:
关键点在于constant expression是一个技术Pascal术语,与常量不同.我怀疑这是混乱的根源. 由于无法使用可传递给TGUID的常量表达式,因此您的属性运气不佳.实际上,拥有一个可以传递给open数组参数的常量表达式是不可能的. 我想你可以使用GUID的字符串表示来解决这个难题,但这会让你感到麻烦复制,并且无法传递GUID数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |