表示: DelphiC++
表示: Win32LinuxOS X
表示設定

Delphi におけるクロスプラットフォーム アプリケーションについての考慮事項

出典: RAD Studio XE2

クロスプラットフォーム アプリケーション:インデックス への移動


目次

64 ビット Windows システムでは Extended データ型のサイズは 2 バイト小さい

Extended データ型のサイズは、以下のように、Win64 と Win32 では異なります。

  • Win64 では、Extended 型は Double(8 バイト)のエイリアスです。
  • Win32 では、Extended 型は(依然として)10 バイトです。

このように、Win64 で Extended データ型を使用する場合は、Win32 に比べて精度が低くなります。 アプリケーションで浮動小数点演算などに Extended データ型を使用しており精度に頼っている場合は、サイズのこのような違いはデータに影響を及ぼすおそれがあります。

非常に小さい値や非常に大きい値が最も影響を受けます。 これら 2 つのデータ型の精度は次のようになります。

  • 1x10308 IEEE Double(Win64 でサポート)
  • 1x104932 IEEE Extended(Win32 でサポート)

コード ベースに Extended データ型が含まれている場合は、次のヒント メッセージが表示されます: 「W1066 Extended 型の浮動小数値の精度が失われます。Double 型に丸めました(Delphi)」。 拡張精度浮動小数点演算は 32 ビット アプリケーションでサポートされており、64 ビット アプリケーションではサポートされていません。 Win64では、Extended 型の変数を扱う浮動小数点演算は倍精度型に丸められます。

拡張精度浮動小数点変数を扱うためにTExtended80Rec レコードを使用できます。ただし、メモリからの読み書きと低レベルの変更(仮数部、指数部、または符号の変更)しか実行できません。

Win32 から OS X への Delphi アプリケーションの移行

VCL は Windows 専用であり、OS X をサポートしていません。

それに対して、RTL は Win32、Win64、OS X をサポートしています。 中でも、RTL には System、SysUtils、IOUtils の各ユニットが含まれています。 (VCL ではなく)RTL のみを使用する Delphi アプリケーションは、ほとんど変更しなくても OS X(および Win64)で動作します。 VCL や RTL を使用する Delphi アプリケーションは、Win32 と Win64 の両方をサポートします。 RTL に関するさらなる情報については、「RTL (ランタイム ライブラリ)の利用」を参照してください。

Win32 から Win64 への Delphi アプリケーションの移行

VCL と RTL は Win32 でも Win64 でもサポートされています。

Delphi Win64 アプリケーション開発については、「Windows 向けの 64 ビット クロスプラットフォーム アプリケーション開発」を参照してください。

64 ビット版 Windows でのインライン アセンブリの制限

ユーザーのコード ベースにインライン アセンブリ コードが含まれる場合は、64 ビットに移行するためにコードを変更する必要があります。 詳細は、以下のトピックを参照してください。

関連項目

以前のバージョン
他の言語