type
TStaticArray = array[1..10] of integer;
TDynamicArray = array of integer;
TMyClass = class(TObject)
private
FStaticArray: TStaticArray;
FDynamicArray: TDynamicArray;
published
property staticArray: TStaticArray read FStaticArray write FStaticArray; //compiler chokes on this
property dynamicArray: TDynamicArray read FDynamicArray write FDynamicArray; //compiler accepts this one just fine
end;
Cosa sta succedendo qui? Una matrice statica fornisce l'errore, "staticArray" di proprietà pubblicata non può essere di tipo ARRAY "ma gli array dinamici vanno bene? Non ho capito bene. Qualcuno conosce il ragionamento alla base di questo e come posso aggirarlo? (E no, non voglio ridichiarare tutti i miei array statici come dinamici. Sono le dimensioni che sono per una ragione.)Perché alcuni array possono essere pubblicati ma non altri?
Una sola precisione: un record non può essere utilizzato come proprietà pubblicata. O in effetti, è consentito, ma RTTI non è associato a questo campo. Quindi sarà inutile aggiungere un record in una sezione di proprietà pubblicata. Mentre una matrice dinamica è consentita e gestita all'interno di RTTI. –