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