2015-10-27 58 views
1

該文檔說動態數組可以使用開放數組參數傳遞給函數/過程。屬性setter可以使用開放數組參數嗎?

例如,下面的工作,按照doc。

type 
    TAInteger = array of Integer; 

function Work(const A: array of Integer): Integer; 
begin 
    Result := Length(A); 
end; 

但是,下面的代碼抱怨E2008 Incompatible types

type 
    TTest = class 
    private 
    procedure SetIntegerArray(const Value: array of Integer); 
    published 
    property Value: TAInteger write SetIntegerArray; 
    end; 

我很困惑,爲什麼有「不兼容類型」的錯誤,並且property setter是否可以使用開放數組參數?

+0

FWIW,如果您使用的是現代的德爾福,然後'在tarray '會給你更大的靈活性比一個定製的動態數組類型 –

+0

@DavidHeffernan你爲什麼回滾我的編輯?我所做的只是添加官方文檔的鏈接。原來的問題沒有被觸及。 – SOUser

+0

您添加了更多。詞沒有。爲什麼? –

回答

4

屬性設置器可以使用開放數組參數嗎?

的類型,包含新的屬性值必須與屬性的類型兼容的參數號。開放數組不是一種類型。你的屬性設置必須這樣寫:

procedure SetIntegerArray(const Value: TAInteger); 
+0

謝謝你的幫助! – SOUser

相關問題