Delphi/C++BuilderのFileOpen関数の戻り値の型が変更されていた。
Delphiでは、Delphi XE2から戻り値の型がInteger(XE以前)からTHandle(XE2以降)に変更されている。
C++Builderではint(XE以前)からunsigned(XE2)、NativeUInt(XE3以降)へと変更されている。
ヘルプを見るとエラーを示す値は-1のままのようで、整合性がとれていない。(THandle型やNativeUInt型は負数にならない)
戻り値が -1 の場合は,エラーが発生したことを示します。
Delphi
Delphi 2010
function FileOpen(const FileName: string; Mode: Cardinal): Integer;
Delphi XE
function FileOpen(const FileName: string; Mode: LongWord): Integer;
Delphi XE2
function FileOpen(const FileName: string; Mode: LongWord): THandle;
Delphi XE3
function FileOpen(const FileName: string; Mode: LongWord): THandle;
C++Builder
C++Builder 2010
int __fastcall FileOpen(System::UnicodeString FileName, unsigned int Mode);
C++Builder XE
int __fastcall FileOpen(const System::UnicodeString FileName, unsigned Mode);
C++Builder XE2
unsigned __fastcall FileOpen(const System::UnicodeString FileName, unsigned Mode);
C++Builder XE3
NativeUInt __fastcall FileOpen(const System::UnicodeString FileName, unsigned Mode);