C
chenglh
Unregistered / Unconfirmed
GUEST, unregistred user!
以下代码出错,请问是为什么呢?谢谢!
IDbDealer是一个接口定义,有GUID的接口。
TDmDBDealer是一个TDataModule,实现了IDbDealer接口。
函数代码如下:
var
dmDBDealer:TDmDBDealer;
begin
dmDBDealer:=TDmDBDealer.Create(nil);
dmDBDealer.ConnectionStr:=untCommon.ComposeADOConnnectionStr('.','dbFG','sa','');
sql:=format('select * from %s',[TABLE_NAME_DICT]);
(dmDBDealer as IDmDbDealer).OpenCDS(sql,cdsFile);
dmDBDealer.Free;
end;
调试过程中一执行到函数结尾就报错。
改成下面的代码就不出错了。
var
dmDBDealer:TDmDBDealer;
aIDBDealer:IDbDealer;
begin
dmDBDealer:=TDmDBDealer.Create(nil);
dmDBDealer.ConnectionStr:=untCommon.ComposeADOConnnectionStr('.','dbFG','sa','');
aIDBDealer:=dmDBDealer;
sql:=format('select * from %s',[TABLE_NAME_DICT]);
aIDBDealer.OpenCDS(sql,cdsFile);
aIDBDealer:=nil;
dmDBDealer.Free;
end;
我想应该与接口的自动释放有关系,可是我不明白
显式转换和临时变量的区别怎么这么大呢?隐式转换接口为什么会抱错?请高人指点,谢谢了
IDbDealer是一个接口定义,有GUID的接口。
TDmDBDealer是一个TDataModule,实现了IDbDealer接口。
函数代码如下:
var
dmDBDealer:TDmDBDealer;
begin
dmDBDealer:=TDmDBDealer.Create(nil);
dmDBDealer.ConnectionStr:=untCommon.ComposeADOConnnectionStr('.','dbFG','sa','');
sql:=format('select * from %s',[TABLE_NAME_DICT]);
(dmDBDealer as IDmDbDealer).OpenCDS(sql,cdsFile);
dmDBDealer.Free;
end;
调试过程中一执行到函数结尾就报错。
改成下面的代码就不出错了。
var
dmDBDealer:TDmDBDealer;
aIDBDealer:IDbDealer;
begin
dmDBDealer:=TDmDBDealer.Create(nil);
dmDBDealer.ConnectionStr:=untCommon.ComposeADOConnnectionStr('.','dbFG','sa','');
aIDBDealer:=dmDBDealer;
sql:=format('select * from %s',[TABLE_NAME_DICT]);
aIDBDealer.OpenCDS(sql,cdsFile);
aIDBDealer:=nil;
dmDBDealer.Free;
end;
我想应该与接口的自动释放有关系,可是我不明白
显式转换和临时变量的区别怎么这么大呢?隐式转换接口为什么会抱错?请高人指点,谢谢了