2010/9/27 Jim <hakki...@gmail.com>:
> Fpc sometimes complains (hints) about local variables not being initialized.
> My question: how do I initialize more complicated structures like
> records? And should I need to (I'm guessing no in the example below, but
> the contents of the record will be undefined - no problem as there are
> no pointers/strings in there)?
>
> Example:
> ....
> Type
>  TIfdTag = packed Record
>    ID: word;
>    //Tag number
>    Typ: word;
>    //Type tag
>    Count: cardinal;
>    //tag length
>    Offset: cardinal;
>    //Offset / Value
>  End;
> ....
> Var
>  tag: TIfdTag;
> ....
> in code somewhere
>               ReadTag(tag);
>
> As TIfdTag seems to contain non-pointer records only, I thought I could
> use Sizeof and tried this:
> FillByte(tag, SizeOf(tag), 0); //initialize var.
> The compiler warning doesn't go away though.
>
> Is this the recommended way of doing things?

There is not enough code shown to say much. If the ReadTag procedure
is declared with a presumably var paramater of type TIfdTag then the
compiler warning is OK if the passed record has not been initialized
in any way. In such case it may/should help to change the 'var'
paramater to an 'out' parameter to explicitly tell the compiler that
there is nothing going into ReadTag but only the other way.

HTH

-- 
bflm
freepascal-bits.blogspot.com
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to