[fpc-pascal]sizeof returns wrong size?

Jonas Maebe jonas at zeus.rug.ac.be
Tue Mar 26 22:51:22 CET 2002


On Tue, 26 Mar 2002 James_Wilson at i2.com wrote:

> I'm attempting to write a generic writeln type of procedure for win32
> console mode programs, but I'm having trouble using sizeof. I'm reasonably
> certain I've got it written correctly, but perhaps I'm missing something.

The thing you're missing is that sizeof() is always evaluated at
comnpile-time, never at run-time.

> Procedure Win32Write (Col,Row : byte; var SourceData);
>
> var
>   BuffSize  : TCoord;
>   BuffCoord  : TCoord;
>   DestRect  : TSmallRect;
>
>
> begin
>
>   // BuffSize is how big a window to write
>   BuffSize.X := sizeof (SourceData);

This will always return 4 I think (because a generic "var" parameter is
simply a pointer to whatever data you are passing to the routine).

You will have to add an explicit size parameter to your routine to solve
this.


Jonas





More information about the fpc-pascal mailing list