Почему TValue. Требовать указатель на ссылку на объект?

У меня всегда было впечатление, что объекты в Delphi на самом деле являются ссылками на ячейки памяти, которые, в свою очередь, хранятся как переменные-указатели.

Теперь я хочу создать ТВ-значение из объекта. Рассмотрим это:

TValue.Make(AObject, TypeInfo(TMyObject), val);

где val: TValue . Это не сработает. Фактически, последующее использование val приведет к нарушению доступа. Однако, если мы используем оператор адресации, например:

TValue.Make(@AObject, TypeInfo(TMyObject), val);

, все хорошо. Для меня это было неожиданно, поскольку я думал, что AObject (под капотом) на самом деле является указателем. Я ошибаюсь или это причуда метода TValue.Make? Не мог бы кто-нибудь просветить меня?

8
задан Rob Kennedy 7 November 2011 в 15:35
поделиться