Invalid class typecast in bpl(dll)

Discussion of open issues, suggestions and bugs regarding MyDAC (Data Access Components for MySQL) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
vga
Posts: 58
Joined: Sat 08 Jul 2006 12:04

Invalid class typecast in bpl(dll)

Post by vga » Wed 11 Jan 2012 05:33

MyCode:

unit IDataModule;

interface

uses MemDS, DBAccess, MyAccess;

type
TIDM = interface
['{CE4B0AA7-CE04-4F67-A107-409A5F9DC189}']
function SysCon : TMyConnection;
function DayCon: TMyConnection;
end;

var
IDM: TIDM; implementation

end.



unit DataModule;

interface

uses
SysUtils, Classes, DB, IDataModule, MemDS, DBAccess, MyAccess;

type
TDM = class(TDataModule, TIDM)
conSys: TMyConnection;
conDay: TMyConnection;
private
{ Private declarations }
public
{ Public declarations }
function SysCon : TMyConnection;
function DayCon : TMyConnection;
end;


implementation

{$R *.dfm}

{ TDM }

function TDM.DayCon: TMyConnection;
begin
Result := conDay;
end;

function TDM.SysCon: TMyConnection;
begin
Result := conSys;
end;
end.



unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, StdCtrls, Grids, DBGrids, DBAccess, MyAccess, MemDS, IDataModule;

type
TForm3 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
DataSource1: TDataSource;
qry1: TMyQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

function SetIDM(aIDM : TIDM) : Boolean;
function ShowForm(App : TApplication) : TForm;

exports
SetIDM,
ShowForm;

implementation


{$R *.dfm}


function SetIDM(aIDM : TIDM) : Boolean;
begin
try
IDM := aIDM;
Result := True;
except
Result := False;
end;
end;

function ShowForm(App : TApplication) : TForm;
begin
Result := TForm3.Create(Application);
Result.Show;
end;

procedure TForm3.Button1Click(Sender: TObject);
var
con: TMyConnection;
begin
con := TMyConnection.Create(nil);
con.AssignConnect(IDM.SysCon);
qry1.Connection := Con;

if con.Connected then begin
qry1.Open; // here => Invalid class typecast
end else
qry1.Close;
FreeAndNil(con);
end;

end.

AndreyZ

Post by AndreyZ » Wed 11 Jan 2012 11:38

Hello,

I executed your code without any problems. Please try creating a small sample that demonstrates this problem and send it to andreyz*devart*com . Also please specify the following:
- the exact version of your IDE;
- the exact version of MyDAC.

vga
Posts: 58
Joined: Sat 08 Jul 2006 12:04

Post by vga » Thu 12 Jan 2012 03:25

thank you.

it work fine now.

Post Reply