我已经经历了一个奇怪的关于重命名TValue数组类型的类似;
TValueArray1 := TArray <TValue>;
TValueArray2 := Array of TValue;我想说的是,他们的行为不应该相似吗?我有一个方法,它有一个常数打开的TValue数组作为参数,但是当我用任何TValueArray替换它时,编译器就开始期望序数值,为什么?
例如,正确工作;
// G1 - TGUID; B1 - TBytes; I1 - Integer; S1 - String
procedure TAgBuffer.Add ( const AData: Array of TValue );
TAgBuffer.Add ( [(TValue.From <TGUID> ( G1 )), TValue.From <TBytes> ( B1 ), I1, S1] );但是,将“TValue的数组”替换为任何TValueArray后,会出现以下编译器错误:
[dcc32 Error] Unit1.pas(44): E2001 Ordinal type required // for G1
[dcc32 Error] Unit1.pas(44): E2010 Incompatible types: 'Integer' and 'TValue' // for B1发布于 2013-11-27 10:57:08
下面是一个链接,详细解释了开放数组和动态数组之间的区别。
http://rvelthuis.de/articles/articles-openarr.html
https://stackoverflow.com/questions/20221273
复制相似问题