On Mon, 7 Nov 2016 17:45:20 +0000 (UTC), Peter Below wrote:
> JJ wrote:
>> I have this simple code.
>> program test;
>> type abc = variant;
>> If I compile it, the compiler includes the Variants unit, even though
>> the variant type is declared in the System unit.
> The compiler does nothing of this sort, it is the IDE when you save the
> program file (which it does automatically when you ask it to compile
> the code).
Yes it does. I actially tested this using DCC32 command line compiler.
>> The above code doesn't even refer the variant type as a variable, so
>> there no need for variant variable initialization. There should be no
>> variant related code to be included in the program at all.
> So what? In any real code that actually *uses* your abc type you will
> need variant support routines. Your example is completely artifical.
> You could try to use OleVariant instead of Variant, if you already have
> Windows in the Uses clause anyway.
I need to implement my own custom variant routines without including the
Variants unit - for smaller executable file. Variant values won't be
accessed as is. They will be type casted to TVarData and will always be
accessed as TVarData from within the custom variant routines. Only those
routines' function declarations need to have "variant" for a type. e.g.
procedure XVariantSet(var v: variant; b: boolean); overload;
procedure XVariantSet(var v: variant; i: integer); overload;