Ho sempre avuto l'impressione che gli oggetti in Delphi siano in realtà riferimenti a posizioni di memoria, che a loro volta ho immaginato fossero memorizzate come variabili puntatore.Perché TValue.Make richiede un puntatore a un riferimento a un oggetto?
Ora, voglio creare un TValue da un oggetto. Considera questo:
TValue.Make(AObject, TypeInfo(TMyObject), val);
dove val: TValue
. Questo non funzionerà. Di fatto, l'utilizzo successivo di val
comporterà una violazione di accesso. Tuttavia, se usiamo l'operatore address-of, in questo modo:
TValue.Make(@AObject, TypeInfo(TMyObject), val);
tutto è buono. Per me, questo era inaspettato, poiché pensavo che AObject fosse (sotto il cofano) in effetti un puntatore. Ho sbagliato o è una stranezza con il metodo TValue.Make? Qualcuno potrebbe per favore illuminarmi?
grazie mille per un chiaro e una spiegazione succinta! – conciliator
Sottile e fondamentale ... ;-) +1 –