[fpc-pascal] Typed file problem.
michalis at camelot.homedns.org
Wed Jun 22 22:42:56 CEST 2005
> I have developed a console app, wich use a typed file. I use Lazarus to make the GUI, but there is some problem with the typed file generated by the console app. The GUI app does not read the file correctly. Specially with the string vars.
> Is it a problem with the delphi mode compilation (some diference handling typed files)? How can I do to detect the problem in compilation time?
> My workaround is to compile the console part first, and then compile the GUI in Lazarus. But I think that there is a better solution. I can't recompile all the software with Lazarus, because I have a lot of cgi apps (no GUI) that reads the typed files.
> Thanks in advance! Lazarus is great !
> (excuse my english...)
First of all, Lazarus and GUI/non-GUI difference has nothing to do here.
Lazarus allows you to compile non-GUI programs without any problems, if
you want. Of course, the same compiler and the same RTL is used to
compile GUI (i.e. LCL) and console programs.
As far as I understand, by "typed file" you mean that you use file
variable of type like "file of TSomeType". This is not any magic format
for a file, it just reads/writes a series of TSomeType values from/to a
Are you sure that exactly the same definition of TSomeType is used when
you compile GUI and console version of your program ? Maybe some
structures are aligned differently when you compile GUI and console
version of your program ? Are you sure that the unit where TSomeType
type is declared is always compiled in the same FPC $mode ? Maybe you
use "string" inside your TSomeType and sometimes it's understood as
"ShortString" and sometimes as "AnsiString" ?
The one thing that you can check is to print SizeOf(TSomeType) from your
program, once from the GUI version and then from the console version.
They should be equal. If they are not, you know where your bug is. You
must ensure that your units are always compiled with the same options,
both for console and for GUI version.
Otherwise, I think that we could help more if you would show some code
snippets how exactly do you read/write your file.
More information about the fpc-pascal