Hairy Pixels schrieb am Do., 6. Okt. 2022, 13:49:
Show quoted text 24 lines
> On Oct 6, 2022, at 12:45 PM, Sven Barth
wrote:
>
> Am 05.10.2022 um 14:16 schrieb Hairy Pixels via fpc-pascal:
>> Is it possible to assign a class to a variant? I tried and get a crash.
If not, why not? It’s just a pointer so I would expect it to work.
>
> There is no field that would hold a class reference and no type value
that would differentiate it, thus the code handling variants would not be
able to finalize (aka free) a class correctly. You can of course always use
a custom type and handle that yourself. *shrugs*
Oh so the problem is variant thinks it should try to manage memory for
you? I tried doing:
v: variant;
begin
v := GetMem(100);
And that crashed also. I thought it would be ok to just hold the reference
but not claim ownership over it.
Variants count as managed types and they can contain interface references and strings. If you use a custom type you can do as you please, but the internal types that can be assigned to a Variant *are* managed accordingly (if the types themselves are managed).
Regards,
Sven