WeG*_*ars 7 delphi delphi-7 delphi-xe
我在Delphi 7程序中有这个常量.他们没有在Delphi XE下编译.
TYPE
TSingleChar= AnsiChar;
CONST
noData: TSingleChar= '.';
Ambiguity= ['x'];
DNA_Ambig= ['x', noData]+ Ambiguity;
Run Code Online (Sandbox Code Playgroud)
[DCC错误] E2026预期的常量表达式.
"修复"它像这样:
TYPE
TSingleChar= AnsiChar;
CONST
Const_noData = '.';
noData: TSingleChar= Const_noData;
Ambiguity= ['x'];
DNA_Ambig= ['x', Const_noData]+ Ambiguity;
Run Code Online (Sandbox Code Playgroud)
Const_noData就编译器而言,它是一个真正的const,允许您初始化它们noData并DNA_Ambig使用它.而你还是尊重了DRY原则,即有只有一个定义noData的Const_noData.
const
Ambiguity: TAnsiCharSet = ['B', 'D', 'H'];
Ambiguity2: TAnsiCharSet = ['C', 'c', 't'] + Ambiguity;
Run Code Online (Sandbox Code Playgroud)
也没有工作.
const
Ambiguity = ['B', 'D', 'H'];
Ambiguity2 = ['C', 'c', 't'] + Ambiguity;
Run Code Online (Sandbox Code Playgroud)
确实有效.类型常量根本不是常量...
(请注意,这个问题与歧义无关.它是关于什么被认为是常数,什么不是.)