If f$LONGSTRINGS ONg is speci ed, the keyword String (no length speci er) will be treated as AnsiString, and the compiler will treat the corresponding variable as an ansistring, and will generate corresponding code. This switch corresponds to the -Sh command line option.
By default, the use of ansistrings is o , corresponding to f$H-g. The system unit is compiled without ansistrings, all its functions accept shortstring arguments. The same is true for all RTL units, except the sysutils unit, which is compiled with ansistrings.
However, the f$MODEg statement in uences the default value of f$Hg: a f$MODE DELPHIg directive implies a f$H+g statement, all other modes switch it o . As a result, you should always put f$H+g after a mode directive. This behaviour has changed, in older Free Pascal versions this was not so.