Groups | Search | Server Info | Login | Register


Groups > comp.lang.pascal.delphi.misc > #745

Re: Prevent Variants unit from being implicitly included?

From JJ <jj4public@vfemail.net>
Newsgroups comp.lang.pascal.delphi.misc
Subject Re: Prevent Variants unit from being implicitly included?
Date 2016-11-08 17:18 +0700
Organization ?
Message-ID <rosb3w7jg4zw$.1oy8t914u3fvk$.dlg@40tude.net> (permalink)
References <1q8c3is94cfki.c0qjwc2tsgjh$.dlg@40tude.net> <nvqejg$6ve$1@solani.org>

Show all headers | View raw


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;
>>   begin
>>   end.
>> 
>> 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;
  begin
    TVarData(v).VType:= varBoolean;
    TVarData(v).VBoolean:= b;
  end;

  procedure XVariantSet(var v: variant; i: integer); overload;
  begin
    TVarData(v).VType:= varInteger;
    TVarData(v).VInteger:= i;
  end;

Back to comp.lang.pascal.delphi.misc | Previous | NextPrevious in thread | Find similar


Thread

Prevent Variants unit from being  implicitly included? JJ <jj4public@vfemail.net> - 2016-11-07 03:51 +0700
  Re: Prevent Variants unit from being implicitly included? "Peter Below" <peter.below@online.de> - 2016-11-07 17:45 +0000
    Re: Prevent Variants unit from being implicitly included? JJ <jj4public@vfemail.net> - 2016-11-08 17:18 +0700

csiph-web