I had this constants in a Delphi 7 program. They are not compiling under Delphi XE.
TYPE
TSingleChar= AnsiChar;
CONST
noData: TSingleChar= '.';
Ambiguity= ['x'];
DNA_Ambig= ['x', noData]+ Ambiguity;
[DCC Error] E2026 Constant expression expected.
"Fix" it like this:
TYPE
TSingleChar= AnsiChar;
CONST
Const_noData = '.';
noData: TSingleChar= Const_noData;
Ambiguity= ['x'];
DNA_Ambig= ['x', Const_noData]+ Ambiguity;
The Const_noData
is a true const as far as the compiler's concerned, allowing you to initialize both noData
and DNA_Ambig
using it. And you still respect the DRY principle, ie, there's only one definition for noData
, the Const_noData
.
const
Ambiguity: TAnsiCharSet = ['B', 'D', 'H'];
Ambiguity2: TAnsiCharSet = ['C', 'c', 't'] + Ambiguity;
does not work.
const
Ambiguity = ['B', 'D', 'H'];
Ambiguity2 = ['C', 'c', 't'] + Ambiguity;
does work. Typed constants aren't really constants at all...
(Notice that the issue has nothing to do with ambiguity. It is about what is considered a constant and what is not.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With