我一直在經歷一個奇怪的情況,涉及重命名TValue數組類型,重命名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]);
但與任何TValueArray替換 'TValue的陣' 之後給出了以下編譯器錯誤: -
[dcc32 Error] Unit1.pas(44): E2001 Ordinal type required // for G1
[dcc32 Error] Unit1.pas(44): E2010 Incompatible types: 'Integer' and 'TValue' // for B1
有開放數組和類型數組之間的差之差的鏈接。 –
對於動態數組參數,不能使用開放數組構造函數語法(括號) - 請參閱http://qc.embarcadero.com/wc/qcmain.aspx?d=93549 –
如果未來將此功能包含在內,那將會很棒發佈雖然... –