2010-11-24 7 views
23

私は自分の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". 

問題の原因は何ですか?

+0

これは、DataExplorerの問題または独自のコードよりも、.NETの問題自体がはるかに少ない可能性があります。 – stephbu

+0

この[post](http://stackoverflow.com/questions/5765424/how-to-access-databases-from-within-delphi-xe-professional-ide)の情報の一部は役に立つかもしれません。 –

答えて

関連する問題