Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2003-04

Small bug in fpc 1.0.7 and an idea of some small improvement

2 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Michalis Kamburelis

Hi,

I recently downloaded a snapshot of fpc 1.0.7 and found a small bug in it :

     const s = SizeOf(TObject);

doesn't work (compiler "Error: Illegal expression"). This is not related only to TObject, it will not work with any class name. And if I declare some variable of type class (like

     var V:TObject;
     const S = SizeOf(V);

) it will not work too.
And it will not work in ANY constant expression, e.g.

     type T = array[0..SizeOf(TObject)]of Integer;

doesn't work too.

I downloaded 1.0.7 snapshot at 1st of April.

I know that always SizeOf(TObject) = SizeOf(Pointer) = 4 (at least on 32-bit processors) but I'm using some macros that declare types using constant SizeOf(TYPE_NAME) where TYPE_NAME is another macro (and TYPE_NAME may be but doesn't have to be some class type). So using SizeOf(<class-name>) is useful for me. And it works with fpc 1.0.6 and it works with recent fpc 1.1 (downloaded at the same day, 1st of April).

I have also an idea of some small improvement. I can use #INCLUDE <file-name> in fpc config files (like fpc.cfg). But when I use relative file names for <file-name> they are resolved with respect to the directory where currently compiled Pascal source file is located in. Wouldn't it be better if relative <file-name> be resolved with respect to the directory where current config file is ?

I know my english isn't too good so I better give an example of what I mean. Assuming I have some program in file /progs/prog.pas I would like to compile it with command
fpc @/configs/config1.cfg /progs/prog.pas
where
[contents of file /configs/config1.cfg]

     #INCLUDE config2.cfg

[contents of file /configs/config2.cfg]
... some configuration directives for fpc ...

Currently this doesn't work with any fpc version. Fpc wants to find included file config2.cfg in directory /progs/.

Thanks in advance for any response,
Michalis Kamburelis,

Reply by email

Michał Kamburelis

Hi,

I already sent this letter but I had not received any answer. So I'm repeating it now. Below is a description of some small (but important for some parts of my code) bug in FPC 1.0.7 (only in 1.0.7, it works fine in 1.0.6 and recent 1.1) and an idea of some really small improvement that could be added to the compiler. Please, I'm waiting for any response, especially about that bug. I know my English is not too good (but I'm trying), if what I wanted to say in this letter was not clear - answer something and I'll try to explain it better.

I recently downloaded a snapshot of fpc 1.0.7 and found a small bug in it :

     const s = SizeOf(TObject);

doesn't work (compiler "Error: Illegal expression"). This is not related only to TObject, it will not work with any class name. And if I declare some variable of type class (like

     var V:TObject;
     const S = SizeOf(V);

) it will not work too.
And it will not work in ANY constant expression, e.g.

     type T = array[0..SizeOf(TObject)]of Integer;

doesn't work too.

I know that always SizeOf(TObject) = SizeOf(Pointer) = 4 (at least on 32-bit processors) but I'm using some macros that declare types using constant SizeOf(TYPE_NAME) where TYPE_NAME is another macro (and TYPE_NAME may be but doesn't have to be some class type). So using SizeOf(<class-name>) is useful for me. And it works with fpc 1.0.6 and it works with recent fpc 1.1.

I have also an idea of some small improvement. I can use #INCLUDE <file-name> in fpc config files (like fpc.cfg). But when I use relative file names for <file-name> they are resolved with respect to the directory where currently compiled Pascal source file is located in. Wouldn't it be better if relative <file-name> be resolved with respect to the directory where current config file is ?

I know my english isn't too good so I better give an example of what I mean. Assuming I have some program in file /progs/prog.pas I would like to compile it with command
fpc @/configs/config1.cfg /progs/prog.pas
where
[contents of file /configs/config1.cfg]

     #INCLUDE config2.cfg

[contents of file /configs/config2.cfg]
... some configuration directives for fpc ...

Currently this doesn't work with any fpc version. Fpc wants to find included file config2.cfg in directory /progs/.

Thanks for any response,
Michalis Kamburelis,

Reply by email