私は自分のDBX 4をDelphi 2010 for Firebirdデータベースに作成しました。ドライバはdynalinkドライバであり、TSQLConnectionで正常に動作します。DataExplorer.exeを使用して家庭用のDBX4ドライバに接続する際の遭遇エラー
最近、私はDataExplorer.exeを使用しようとは、Delphi 2010と出会いエラーでリリース:
"Attempted to read or write protected memory.
This is often an indication that other memory is corrupt".
をトレースした後のソースコードを、私は次のエクスポート方法が問題の原因である可能性がありますが見つかりました:
function DBXLoader_GetDriver(Count: TInt32; Names, Values: TWideStringArray;
ErrorMessage: TDBXWideStringBuilder; out pDriver: TDBXDriverHandle):
TDBXErrorCode; stdcall;
このメソッドをデバッグすると、NamesおよびValuesパラメータに破損した値が含まれます。私は問題の原因を知りません。おそらく、そこDataExplorer.exeといくつかのメモリマネージャの問題(?.NET号)
は、いくつかの試行錯誤の後で、私は以下のようにメソッドを変更しよう:
type
TWideStringArray2 = array of PChar;
function DBXLoader_GetDriver(Count: TInt32; Names, Values: TWideStringArray2;
ErrorMessage: TDBXWideStringBuilder; out pDriver: TDBXDriverHandle):
TDBXErrorCode; stdcall;
この時、エラーがありますこのメソッドを終了した直後に同じエラーが再び発生します
"Attempted to read or write protected memory.
This is often an indication that other memory is corrupt".
問題の原因は何ですか?
これは、DataExplorerの問題または独自のコードよりも、.NETの問題自体がはるかに少ない可能性があります。 – stephbu
この[post](http://stackoverflow.com/questions/5765424/how-to-access-databases-from-within-delphi-xe-professional-ide)の情報の一部は役に立つかもしれません。 –