2

paradox データベース (*.db) に接続するプログラムを実行すると、次のようなエラー メッセージが表示されますproject myprogram.exe raised exception class EDBEngineError with message Insufficient memory for this operation

DataSource1、Table1、および Query1 コントロールを使用して、Query1 の結果を DBGrid1 に表示します。レコードは 100 レコードを超えず、フィールドは約 6 フィールドで、データベース内のテーブルは 1 つだけです。ただし、Query1 の RequestLive プロパティは True に設定されています。

解決策を Web で検索したところ、ShareMemory などを増やすには BDE 管理者の [INIT] タブを設定する必要があることがわかりました。BDE コントロールの初期化を設定するのは正常ですか、それとも何か問題がありますか?

ありがとう。

4

3 に答える 3

3

はい、ここでSHAREDMEMSIZE説明されているように機能させるには、このパラメーターを増やす必要があります。これが新しいプロジェクトである場合、paradox データベースの使用はお勧めしません。Firebird、Microsoft SQL Server Express、Mysql などの無料のデータベースがたくさんあります...

于 2012-07-11T15:21:42.157 に答える
2

このユニットは、有名な 4Gb BDE バグのパッチです。ディスクの空き容量が 4Gb の倍数に近い場合に BDE の使用中に発生する可能性がある「ディスク容量が不足しています」エラーを修正するためにビルドされています。詳細については、Quality Central の BDE レポート # 7089 を参照してください。BDE でエラーが発生する理由は、明らかに、空きディスク領域を計算する際の idapi32.dll のバグです。Idapi32.dll は、kernel32.dll によってエクスポートされた GetDiskFreeSpaceA という API 関数を使用しています。解決策は、kernel32.dll 内の GetDiskFreeSpaceA に現在のプロセス用の「パッチ」を適用することです。この関数へのすべての呼び出しは、新しいルーチン (NewGetDiskFreeSpaceA) にリダイレクトされます。

パッチのソースコードが含まれています。別のプログラミング言語 (つまり、Delphi 以外) を使用する場合は、コンパイル済みの DLL (FIX4GBug.dll) も含まれています。(同梱のユニットをコンパイルできる場合は、DLL を配布する必要はありません) --- 永久に修正します

于 2013-07-03T15:40:35.597 に答える
1

これは、ディスク容量の問題である可能性があります (空きディスク容量がたくさんある場合でも)。私が知る限り、BDE/Paradox は古い Windows (32 ビット?) インターフェイスを使用して利用可能なディスク容量をチェックします。空き容量クエリが xxxxxxxx 00000yyy のような値を返す場合、その値は「yyy」として扱われ、小さすぎると見なされます。臨界点は、空き容量が 2Gb の倍数に近づいたときのようです。大きなファイルを削除または作成してみてください。

于 2012-07-19T09:17:44.763 に答える