OLEオブジェクトの生成でアドレス違反

解決


ベル  2014-01-22 00:26:23  No: 45930

OLEオブジェクトの生成でアドレス違反がでます。

Oracleに接続したく
http://homepage1.nifty.com/project21/articles/delphi/tips_oracle.htm
のURLを参考にしましたが、以下アドレス違反が出ます。
「access violation at 0x60afaebd: read address 0xfeeefeee」
ちなみに、SQLを投げるとそれはキチンと実行できることは確認しています。

以下、検証クラスです。画面開いて閉じるだけでアドレス違反がでるかと思います。
OraSessionにもUnassignedを入れる必要があるのでは?と思い、それも試しましたが、
やはりアドレス違反が出ます。
どこを修正すればアドレス違反が解消されるでしょうか?
よろしくおねがいします。

環境:Delphi7,WinXp

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private 宣言 }
    OraSession: Variant;
    OraDatabase: Variant;
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // OO4O のインタフェイスを作成する
  OraSession:= CreateOleObject('OracleInProcServer.XOraSession');

  // Oracleデータベースを開く
  OraDatabase:= OraSession.OpenDatabase['AC2', 'account/account', 0];
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // データベースを閉じる
  OraDatabase.Close;

  // 使用し終わったら破棄
  OraDatabase:= Unassigned;
end;

end.


snail  2014-01-28 06:47:26  No: 45931

(自信は無いですが)OO4Oってかなり古いORACLEだと思います。
単純にORACLEを使いたいだけなら dbGO(ADO)を利用したらどうでしょうか。

Ado だと↓のサイトが参考になると思います。

http://mrxray.on.coocan.jp/Delphi/plSamples/634_ADO_Oracle.htm


ベル  2014-02-07 18:30:56  No: 45932

>>snailさん
返事遅くなってしまい申し訳ありません。
ADOで実装したところ、アドイス違反がでなくなりました。
ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加