Page 1 of 1

ODAC freezes IDE's interface

Posted: Wed 31 May 2006 12:19
by Matteo
Ok, another question for you (and thanks for the prev quickly answers!):

I've installed ODAC and I'm using it in a test program, without problem.

So I've decided to turn to ODAC in the main application. I put only the uses clauses (Oracle, OracleData, MemDS, DBAccess, Ora) in the project's main form and I run the app.
Everything run perfect but when I close the application (or I press CTRL+F2) Delphi freezes and there is no way to work but killing it with Windows Task Manager.

I've tried and I've discovered that the problem is something in the Ora unit and only when I add Ora to the uses clause Delphi stop to work closing the application.
Could be something wrong with a control routine in the trial version?
Or some known problems with other commercial components (TMS packages, JVCL,...)?

Thanks in advance,

Matteo

Posted: Wed 31 May 2006 12:45
by Challenger
We didn't face similar problems. Please specify the version of Delphi and ODAC you use. If it is possible try
to compose a sample project that demonstrates this problem.

Posted: Thu 01 Jun 2006 08:04
by Matteo
challenger wrote:We didn't face similar problems. Please specify the version of Delphi and ODAC you use. If it is possible try
to compose a sample project that demonstrates this problem.
I'm using Delphi 7 and ODAC 5.70.1.32 trial.
I think the problem occours when I use the LoadLibrary() function to load an external BC++ DLL.
I've tried the following example: a sample form and an empty dll.


The Unit1.pas code:

Code: Select all

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, StdCtrls, Ora;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    h : THANDLE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  h := LoadLibrary(PAnsiChar(ExtractFilePath(Application.ExeName)+'\project2.dll'));
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FreeLibrary(h);
end;

end.

The DLL unit1.cpp code:

Code: Select all

#include 
#include 
#pragma hdrstop
#include "Unit1.h"
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
  return 1;
}
//---------------------------------------------------------------------------

int prova()
{
  return 0;
}

Posted: Thu 01 Jun 2006 11:59
by Challenger
We couldn't reproduce this problem. Please send to ODAC support address complete sample that demonstrates the problem.