У меня всегда было впечатление, что объекты в Delphi на самом деле являются ссылками на ячейки памяти, которые, в свою очередь, хранятся как переменные-указатели.
Теперь я хочу создать ТВ-значение из объекта. Рассмотрим это:
TValue.Make(AObject, TypeInfo(TMyObject), val);
где val: TValue
. Это не сработает. Фактически, последующее использование val
приведет к нарушению доступа. Однако, если мы используем оператор адресации, например:
TValue.Make(@AObject, TypeInfo(TMyObject), val);
, все хорошо. Для меня это было неожиданно, поскольку я думал, что AObject (под капотом) на самом деле является указателем. Я ошибаюсь или это причуда метода TValue.Make? Не мог бы кто-нибудь просветить меня?