Delphi中调用COM中间件的问题,只要能提供思路的回答都有分 ( 积分: 100 )

  • 主题发起人 主题发起人 delphicg
  • 开始时间 开始时间
D

delphicg

Unregistered / Unconfirmed
GUEST, unregistred user!
把下面的VB代码转换成Delphi代码,无法通过调试,求救!
其中:
K3Login,EBCGL都是金蝶的COM中间件!
dim oK3login as object
dim oItem as object
dim oItemclass as object
dim oItemClassSet as object

Set oK3login=createobject("K3login.ClsLogin")
if not oK3login.checkLogin then exit sub
set oitem=Createobject(EBCGL.item)
Set oitemSet=Createobject(EBCGL.itemclass)
set oitem=oitemSet.createnew(101,0,"1100","李四")//Createnew这个函数是个Idispath类型
oitem.savechange

oitem=nothing
oitemclass= nothing
ok3login=nothing
//转换的代码如下:
var
Com_Login_K3:TK3Login;
Com_Set_ItemClass:TItemClassSet;
Com_Set_Item:TItemSet;

OItem,OItemClass:Variant;

begin
Com_Login_K3:=TK3Login.create(self);
if not Com_Login_K3.checkLogin then exit;

Com_Set_ItemClass:=TItemClassSet.Create(self);
OItemClass:=CreateOleObject('ItemClass');//这句出错,提示“无效类型字符串”
OItemClass:=Com_Set_ItemClass.CreateNew('003','你好');//此函数类型IDispath

OItemClass:=Unassigned;//这句不能释放资源
end;
 
把下面的VB代码转换成Delphi代码,无法通过调试,求救!
其中:
K3Login,EBCGL都是金蝶的COM中间件!
dim oK3login as object
dim oItem as object
dim oItemclass as object
dim oItemClassSet as object

Set oK3login=createobject("K3login.ClsLogin")
if not oK3login.checkLogin then exit sub
set oitem=Createobject(EBCGL.item)
Set oitemSet=Createobject(EBCGL.itemclass)
set oitem=oitemSet.createnew(101,0,"1100","李四")//Createnew这个函数是个Idispath类型
oitem.savechange

oitem=nothing
oitemclass= nothing
ok3login=nothing
//转换的代码如下:
var
Com_Login_K3:TK3Login;
Com_Set_ItemClass:TItemClassSet;
Com_Set_Item:TItemSet;

OItem,OItemClass:Variant;

begin
Com_Login_K3:=TK3Login.create(self);
if not Com_Login_K3.checkLogin then exit;

Com_Set_ItemClass:=TItemClassSet.Create(self);
OItemClass:=CreateOleObject('ItemClass');//这句出错,提示“无效类型字符串”
OItemClass:=Com_Set_ItemClass.CreateNew('003','你好');//此函数类型IDispath

OItemClass:=Unassigned;//这句不能释放资源
end;
 
名字错了吧,应该是EBCGL.itemclass
 
1、它原来是几个Dll文件,如
K3login.dll,Ebcgl.dll
我把这几个dll文件导入工程,并生成Unit文件
然后Use它的!

2、你说的方法我试过,不行!
 
var
oK3login,OItem,OItemClass:Variant;]
begin
oK3login:=createobject('K3login.ClsLogin');
if not oK3login.checkLogin then exit;
oitem:=Createobject('EBCGL.item');
oitemSet:=Createobject('EBCGL.itemclass')
oitem:=oitemSet.createnew(101,0,'1100','李四');//Createnew这个函数是个Idispath类型
oitem.savechange;
oitem:=nil;
oitemSet:=nil;
oK3login:=nil;
end;
dll要先注册
 
to迷糊:
调试提示没有Createobject函数!

还有,
请问怎样注册DLL,怎样查看已经注册的DLL?
先在这谢过了!
 
错了,汗。。。
应该是createoleobject不是createobject,另外还要 uses comobj
注册dll 运行regsvr32 yourdll.dll就行,查看已经注册的DLL,应该是在注册表中,你慢慢找吧 :(
 
EBCGL.item
你要取出来看什么字符

晚上回家看
 
to:迷糊
已经搞定,多谢!
还有就是
1、OItem:=nil;时有错误提示!
2、用CreateOleObject('')函数建立的对象不能使用'.'号带出属性!遗憾!
如有答案请发至:jianfeihua@126.com 谢谢!
好了先发分吧!
 
后退
顶部