我大量使用動態數組,並且對SetLength和Finalize過程沒有任何問題。什麼需要在多維動態數組中完成?
我最近有原因使用動態數組,其中每個數組元素本身可能包含可變數量的元素。該聲明是這樣的:
TScheduleArray = array of array of array [1..DaysPerWeek] of TShiftType;
軟件工作正常,我沒有得到一個問題如何使用這種結構。您可以在主陣列上調用SetLength,然後可以在每個數組元素上再次調用SetLength。這是按預期工作的。
SetLength(MyArray, 1);
SetLength(MyArray[0], 2);
我的問題是這樣的:當我來到釋放用於該陣列的資源,我只是叫最後確定的數組變量:
Finalize(MyArray);
或做每個數組元素也需要成爲Finalize d,因爲每個元素本身就是一個動態數組?
ah是的,我在Delphi幫助中看到「如果在Finalize調用中指定的變量不包含長字符串,變體或接口,編譯器將消除該調用並且不會生成任何代碼。 TShiftType是一個枚舉類型,所以沒有對象。 因此,所有這一次我已經仔細調用Finalize,編譯器已經消除了電話?! – 2009-09-16 13:24:42
是的!動態數組和記錄是爲您照顧的。 – 2009-09-16 13:32:54