怪哉,我一直这么用的,突然不行了.(100分)

X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
Vb调用很简单啊!

引用一下U8Login.dll
然后:

Dim Uflogin as new U8Login.cLslogin '应该等同于Delphi的
' uflogin:=CreateOleObject('u8login.clslogin');
'以下的就是一模一样了.可VB调用就能成功.Delphi就失败.

if Uflogin.login('DP') then
...
MsgBox "调用成功!'
Else
MsgBox "调用失败!'
EndIF

我引用 Import Type Library 后得到的 U8Login_tlb.pas 时,报的错就更莫名其妙.

说我参数不一致.

我真是霉!




 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位帮忙看一下?
 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
问题还是没解决!
 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
看来此问题无解了??

!!!!!

天,为什么我Import出来的U8login_tlb也不能调用啊?


 
D

darnis

Unregistered / Unconfirmed
GUEST, unregistred user!
Word 的TLB中的 Open 也一样是一长串参数,,如果使用 *_TLB.pas 的话,,

这是静态联编的,需要完整的参数,,
但是Office 相关的 用 CreateOleObject 后得到的 OleVariant 对象就可以省掉参数。。
但是你这个 用友的是怎么回事,,就不知道了。。。
 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
我要晕了.再说吧.


VB : Dim Uflogin as new U8Login.cLslogin
if Uflogin.login('DP') then
...
MsgBox "调用成功!'
Else
MsgBox "调用失败!'
EndIF

返回"调用成功"


Delphi:
uflogin:=CreateOleObject('u8login.clslogin');

if Uflogin.login('DP') then
...
showMessage("调用成功!');
Else
ShowMessage("调用失败!');
EndIF

返回调用失败!!!

为什么? 为什么????

VB调用就能成功.Delphi就失败.高手赐教!!


 
J

jiangxiancheng

Unregistered / Unconfirmed
GUEST, unregistred user!
你把
Var Uflogin:Variant;
改成
Var Uflogin:OleVariant;
试试,有时好像这两个有些不一样,不过,没有用过U8。
 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
试过OleVariant;一样不行!
 
L

lightstar

Unregistered / Unconfirmed
GUEST, unregistred user!
U8的Login声明为:
function TclsLogin.Login(var pSubId: WideString
var pAccId: WideString
var pYearId: WideString

var pUserId: WideString
var pPassword: WideString

var pDate: WideString
var cSrv: WideString
var cSerial: WideString):
因为该函数参数都声明为var型,所以函数调用时都只是传递地址指针,这样传递的参数就一定要匹配,原参数定
义为WideString,所以传递时就不能只传递字符串常量及String型的参数,建议这样修改:
var
EmptyParameter1, EmptyParameter2,EmptyParameter3,EmptyParameter....: WideString;//需要多少参数就定义多少个
begin
.....
EmptyParameter1 := 'DP'
uflogin:=CreateOleObject('u8login.clslogin');

if Uflogin.login(EmptyParameter1,EmptyParameter2,EmptyParameter3,....) then //定义多少个参数就输入多少个
...
showMessage("调用成功!');
Else
ShowMessage("调用失败!');
EndIF
...
End;
这样应该能够解决问题,100分给我吧.
 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
to :lightstar

总共8个,对吧?!

还是失败!!!


var Emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8: WideString;
begin
emp1:='DP';

uflogin:=createOleObject('u8Login.clslogin');

if Uflogin.login(emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8) then
Begin

MessageBox(handle,'调用成功!','OK:',mb_ok);
End
Else
MessageBox(handle,'调用失败!','Error:',mb_ok);

正常情况应该是能出来U8的注册界面,可是就是不出来。




 
L

lightstar

Unregistered / Unconfirmed
GUEST, unregistred user!
U8我没用过,不过这样调用应该不会再报错了呀,试试给所有的输入参数都赋初始值,再看看行不,报错都与前面所述一致吗
 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
经与用友U8开发组联系,问题终于搞清楚了:U8的开发在U8login.dll里做了限制,只允许
VB调用,可怜的我,折腾了这么长时间,也累各位和我一起折腾,感谢各位。

经商量,U8今后的新版不再限制,用Delphi在U8上二次开发的朋友可以放心了。
(刚发的8.501改错版同样有限制)
再次感谢各位。
 
X

xf163

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部