落とし穴 その1
{$mode objfpc}
を宣言しないと
integerがsmallintになります。
落とし穴 その2
{$H+}
を宣言しないと
stringが string[255]になります。
stringを出し入れする関数が大ダメージを受けます。
:ref.pdf p.23 : 3.2.3
:prog.pdf p.20 : 1.1.20 $H or $LONGSTRINGS : Use AnsiStrings
Delphiでは、デフォルトは {$H+} です。
{$mode objfpc}
なんかは、Delphiにそんなのナイヨと怒られます!!
[エラー] Unit1.pas(): 間違ったコンパイル指令 : 'mode'
同じユニットをDelphiでも使いたいヨ!
ということで
【まとめ】
ソース(pas,pp)に含める指令
{$IFDEF FPC}
{$mode objfpc}
{$H+}
// これがないと FPCで integerが1バイトになるので注意
// これがないと FPCで string[255]になるので注意
{$ENDIF}
------------------
{$mode objfpc}をソースに書きたくない場合は
fpc.cfg 又はプロジェクトのオプションでも
変更できます。
{$H+}は、
Delphiのコンパイラのでは dcc32 -d$H+ みたいなことができるのですが
fpcでは? どうでしょう?? 探しましたがわかりません。
------------------
ついでに
FreePascal2/doc/prog/progap7.html
も必見です
|