考虑:
const
clHotlight: TColor = $00FF9933;
clLink = clHotLight; //alias of clHotlight
[Error] file.pas: Constant expression expected
Run Code Online (Sandbox Code Playgroud)
和替代措辞有效:
const
clHotlight = TColor($00FF9933);
clLink = clHotLight; //alias of clHotlight
Run Code Online (Sandbox Code Playgroud)
说明.
然后考虑:
const
AdministratorGUID: TGUID = '{DE44EEA0-6712-11D4-ADD4-0006295717DA}';
SuperuserGUID = AdministratorGUID; //alias of AdministratorGUID
[Error] file.pas: Constant expression expected
Run Code Online (Sandbox Code Playgroud)
并修复.
编辑:const在声明之前添加关键字; 有人不相信他们是常设.
delphi compiler-errors constants delphi-5 compiler-constants
我将一些Delphi代码从一个项目复制到另一个项目,并发现它不能在新项目中编译,尽管它在旧项目中编译.代码看起来像这样:
procedure TForm1.CalculateGP(..)
const
Price : money = 0;
begin
...
Price := 1.0;
...
end;
Run Code Online (Sandbox Code Playgroud)
所以在新项目中,Delphi抱怨"左侧无法分配" - 可以理解!但是这段代码在旧项目中编译.所以我的问题是,为什么?是否有编译器开关允许重新分配consts?这怎么样?我认为在编译时它们的值被替换了?