Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++RAD Studioニュース

C++Builder 12.2で 4GB以上のファイルを iostreamsで処理する

古いWin64C++ ツールチェーン(bcc64)のSTLでは、64ビットとしてコンパイルした場合でも、ファイルの最大サイズは4GBでした。つまり、大きなサイズのファイルを処理するためにfstreamやiostreamなどの入出力ライブラリを使用すると、メモリ不足などが原因で正しく動作しませんでした。

C++Builder 12.2の新しいWin64C++ ツールチェーン(bcc64x)のRTLでは、4GB以上のファイルサイズの扱いはサポートしていますが、コンパイラオプションのデフォルトは、以前と同様にファイルの最大サイズは4GBのままです。

4GB以上のファイルを扱うためには、コンパイラオプションとして「_FILE_OFFSET_BITS=64」を定義してください。

例えば、C++Builder 12.2のWindows 64ビット(モダン)の[プロジェクト] > [オプション] > [ビルド] > [C++コンパイラ] > [拡張] > [その他のオプション]の”コンパイラに渡す追加オプション”に「-D_FILE_OFFSET_BITS=64」を定義してください。(下図を参照)

1 22

コマンドライン上でビルドする場合も同様です。

なお、現在 C++Builderの次期リリースでは、このコンパイラオプションをデフォルトにするか検討中です。

ボーナスヒント:Delphi RTLのTEncoding クラスを確認してください。ストリームサポートと併用することで、C++ RTLで提供されているデフォルトのクラスよりもはるかに簡単にテキストエンコーディングを処理できます。さらにもちろん、64ビットファイルサイズにもすでにサポートされており、TBufferedFileStreamで優れたパフォーマンスが得られます。しかし、STLを使用したい場合は、新しいC++Builderでも問題ありません。

ウェビナーについて

本ブログの内容は、エンバカデロのC++のブロダクトマネージャである「David Millington」が、ウェビナー内で「Tip #3, Massive Files with iostreams」で解説しています。このウェビナーはC++Builder / RAD Studio 12.2の新しいWin64 モダンツールチェインを活用するためのヒントや非常に有益な情報を紹介しています。もしウェビナー(英語)をご覧になりたい場合は、以下をご参照ください。

「Tip #3, Massive Files with iostreams」の節は、下記の動画の「1:05:02〜」です。



See What's New in 12.2 Athens See What's New in 12.2 Athens Dev Days of Summer 2-24

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES