Delphi:所有常数都是常数,但有些比其他常量更常数?
考虑:
const clHotlight: TColor = $00FF9933; clLink = clHotLight; //alias of clHotlight [Error] file.pas: Constant expression expected 和替代措辞的作品: const clHotlight = TColor($00FF9933); clLink = clHotLight; //alias of clHotlight 说明。 然后考虑: const AdministratorGUID: TGUID = '{DE44EEA0-6712-11D4-ADD4-0006295717DA}'; SuperuserGUID = AdministratorGUID; //alias of AdministratorGUID [Error] file.pas: Constant expression expected 并修复 编辑:在声明之前添加关键字const;有人不相信他们是const。 解决方法
clHotlight:TColor = $ 00FF9933;不是一个常数,而是一个类型常量(=静态变量),即编译器在存储器中为TColor保留一个槽位,该值将在运行时初始保持$ 00FF9933的值。
因为该值可以稍后更改(可分配Const选项为ON),所以它不是一个常量,编译器不能被clLink = clHotLight所接受; clHotlight = TColor($ 00FF9933);与clHotlight = $ 00FF9933严格相同; 阅读这个SO问题(In Delphi 7,why can I assign a value to a const?)和所有好的答案在那里… 编辑:关于TGUID … 所以,试试AdministratorGUID ='{DE44EEA0-6712-11D4-ADD4-0006295717DA}’;不管用。那不是GUID … 解决方法是使用绝对指令使用类型化常量和变量指向同一内存区域: const AdministratorGUID: TGUID = '{DE44EEA0-6712-11D4-ADD4-0006295717DA}'; var SuperuserGUID: TGUID absolute AdministratorGUID; //alias of AdministratorGUID RootGUID: TGUID absolute AdministratorGUID; //alias of AdministratorGUID (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |