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.
(自信は無いですが)OO4Oってかなり古いORACLEだと思います。
単純にORACLEを使いたいだけなら dbGO(ADO)を利用したらどうでしょうか。
Ado だと↓のサイトが参考になると思います。
http://mrxray.on.coocan.jp/Delphi/plSamples/634_ADO_Oracle.htm
>>snailさん
返事遅くなってしまい申し訳ありません。
ADOで実装したところ、アドイス違反がでなくなりました。
ありがとうございます。
ツイート | ![]() |