Delphi为命令行构建设置了可分配常量True

时间:2015-07-24 12:37:26

标签: delphi command-prompt

使用RAD Studio命令提示符构建项目时,出现以下错误: 错误E2064:左侧无法分配到

我知道这与Assignable Typed Constants问题有关,我知道在Embaracadero编译器中将它转到哪里,但是我需要在编译器之外设置这个设置。

我的配置文件目前看起来像这样:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
    <DCC_HppOutput>c:\d64\DCUfiles</DCC_HppOutput>
    <DCC_ObjOutput>c:\d64\DCUfiles</DCC_ObjOutput>
    <DCC_UnitSearchPath>c:\d64\sf\cis;C:\d64\Dcu64;C:\d64\ProkonRibbon;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
    <Icon_MainIcon>Frame_Icon.ico</Icon_MainIcon>
    <DCC_LocalDebugSymbols>true</DCC_LocalDebugSymbols>
    <VerInfo_Release>67</VerInfo_Release>
    <DCC_ImportedDataReferences>false</DCC_ImportedDataReferences>
    <DCC_StrictVarStrings>false</DCC_StrictVarStrings>
    <DCC_Define>_VER7;_VER7;_VER7;_VER7;$(DCC_Define)</DCC_Define>
    <DCC_DcuOutput>c:\d64\Dcu64</DCC_DcuOutput>
    <DCC_ExeOutput>c:\prokon\bin64</DCC_ExeOutput>
    <VerInfo_Keys>CompanyName=;
                FileDescription=;
                FileVersion=2.6.67.0;
                InternalName=;
                LegalCopyright=;
                LegalTrademarks=;
                OriginalFilename=;
                ProductName=;
                ProductVersion=2.6.67.0;
                Comments=23 Jul 2015
    </VerInfo_Keys>
    <VerInfo_Locale>1033</VerInfo_Locale>
    <VerInfo_MinorVer>6</VerInfo_MinorVer>
</PropertyGroup>
<ProjectExtensions>
    <Borland.Personality>Delphi.Personality.12</Borland.Personality>
    <Borland.ProjectType>OptionSet</Borland.ProjectType>
    <BorlandProject>
        <Delphi.Personality/>
    </BorlandProject>
    <ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>

有没有办法在此文件中设置Assignable Typed Constants属性?

1 个答案:

答案 0 :(得分:4)

<PropertyGroup>标记内添加

<DCC_WriteableConstants>true</DCC_WriteableConstants>

您还可以使用{$J+}{$WRITEABLECONST ON}编译器开关在源代码中包含该设置。这将是最可取的选择,因为没有它就无法编译代码。

在代码中使用编译器指令的另一个好处是,您可以有选择地应用可写入类型的常量,而不是使所有类型的常量都可写。

const
  {$WRITEABLECONST ON}
  x: integer = 1;
  {$WRITEABLECONST OFF}
  y: integer = 2;

begin
  writeln(x); // -> 1
  x := 3;
  writeln(x); // -> 3
  y := 4; // does not compile
end.