2017-05-27 100 views
1

我有一個新的發佈德爾福10.2新的編譯器顯示錯誤的問題時德爾福動態數組分配給臨時局部動態數組變量

var 
    FGlobalVar: array of integer; 

procedure SomeProc() 
var 
    ALocalVar: array of integer; 
begin 
    ALocalVar := Pointer(FGlobalVar); {assign dynamic array} 
    {Do Something} 
end; 

在以前版本的Delphi編譯器不顯示任何錯誤。

回答

4

該代碼不應該編譯,東京關閉循環孔。該演員的問題是參考計數可以被繞過。您所擁有的代碼不會遇到這個問題,但是如果將演員編寫在作業的左側,則不會引用任何參考。

Pointer(LocalVar) := GlobalVar; 

寫這樣圓形,LocalVar被分配一個參考動態數組,但引用計數不遞增。我很欣賞你的代碼不是這樣寫的,但我相信這就是開發人員選擇進行更改的原因。

在任何情況下,如果您使用兼容的類型,則不需要投射。切換到TArray<Integer>並且演員不是必需的。此外,您的代碼將能夠與泛型方法交互。