考虑:
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所接受;
因为该值可以稍后更改(可分配Const选项为ON),所以它不是一个常量,编译器不能被clLink = clHotLight所接受;
clHotlight = TColor($ 00FF9933);与clHotlight = $ 00FF9933严格相同;
它是一个真正的常量,编译器将以代码中的值$ 00FF9933替换clHotlight。对于clLink也是如此。
阅读这个SO问题(In Delphi 7,why can I assign a value to a const?)和所有好的答案在那里…
编辑:关于TGUID …
问题是写入AdministratorGUID:TGUID ='{DE44EEA0-6712-11D4-ADD4-0006295717DA}’;不正确
它正在使用一些编译器魔术来调用场景后面的StringToGUID,从而方便地将GUID表达为一个不是大自然的字符串。他们是记录。
所以,试试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