Inpromptu wrote:
[...]


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" ?



This seems to be the problem. Is there any way to stop the compilation of the 
non-delphi part, to avoid string problem ? Is there anyway to force 
ShortStrings in the console app ?.


You can always just write "ShortString" instead of writing "string", then you know that you're for sure using ShortStrings. Also, you can use compiler directive {$H-} to say that "string" should mean "ShortString". {$H+} means that "string" is "AnsiString". The default state of $H depends on FPC $mode that you use.

Note that ShortString length is limited to 255 characters. Usually you shouldn't use ShortString at all in new programs, unless you're really sure that your data will always fit within these 255 characters.

However, storing AnsiStrings in a file cannot be done using Pascal typed files (because AnsiString is a special pointer, so you can't simply read/write it to a file). So if it sounds like you don't want to actually use ShortString, you may want to drop using typed files.

Michalis

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to