フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: BDE 使うなら、コレは導入しとくべき
DEKO
管理者
投稿数: 2690
BDE 使うなら、コレは導入しとくべき
on: 2013/04/07 19:48 Sun

BDE を使っている場合で、充分にディスク容量が残っているにもかかわらず "Insufficient disk space (ディスク容量不足)" のエラーが出る問題を回避します。

[Patch for BDE 'Insufficient disk space' problem]
http://cc.embarcadero.com/item/21475

「出た事ないから俺関係ねーわ」

ほーう。コレが出る理屈を知ってもそういう事が言えるかな?

BDE は空き容量の取得に GetDiskFreeSpaceA() API を使っています。

[GetDiskFreeSpace() API]
http://msdn.microsoft.com/ja-jp/library/cc429305.aspx

2GB 超でおかしくなる…それは Windows 95 (OSR2) 以前の話です。そうではなくて、恐らく BDE は算出された空きディスク容量を DWORD の変数に格納しています

BDE が認識する空き容量 = 実空き容量 mod MAX_UINT

 
なので、4.01 GB の空き容量があったとすると、BDE が認識する空き容量は 0.01 GB なのです。"Insufficient disk space" のエラーはこうして発生します。"Patch for BDE 'Insufficient disk space' problem" は GetDiskFreeSpaceA() を別関数にリダイレクトして、充分な空き容量があるようにみせかけています。

"Patch for BDE 'Insufficient disk space' problem" を組み込むのは簡単で、ロジックをいじる必要は全くありません。

1.アーカイブを解凍したら、その中にある 2 つのファイルをプロジェクトフォルダにコピーする
1.プロジェクトファイルの uses 節に "FixBDE4GbBug" を追加する
3.アプリケーションを配布する際には "FIX4GBug.dll" も配布する。

 
この記事を読んで血の気が引いた方は、即刻作業するか、お客さんトコで問題が出ない事を祈ってくださいねー…(´ー`)y-~~

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.023 sec.