51Testing软件测试论坛
标题:
如何在LR脚本里调用DELPHI的DLL?
[打印本页]
作者:
镭镭
时间:
2008-9-8 19:58
标题:
如何在LR脚本里调用DELPHI的DLL?
我使用使用 lr_load_dll 函数来调用DLL,格式是这样子
vuser_init()
{
lr_load_dll(
"
DLL名
"
);
return
0
;
}
Action()
{
变量= 参数代入内部函数
lr_output_message(
"变量名=%d
"
,变量);
return
0
;
}
不过由于需要传参数,就是上面说到的"变量= 参数代入内部函数"这一部分.假设DLL里有3个函数如下:
function GetFile(const SvrFileName: WideString; const LclFileName: WideString;
OnProgress: Integer): Integer; safecall;
function PutFile(const SvrFileName: WideString; const LclFileName: WideString;
OnProgress: Integer): Integer; safecall;
function Init(const ServerAddr: WideString): Integer; safecall;
在LR脚本里要怎么传参数呢?例如 变量=GetFile(参数1,参数2)?可以这样直接调用DELPHI的函数吗?
作者:
aks5201314
时间:
2008-9-9 10:20
变量=GetFile(参数1,参数2)这样可以调用DLL文件的函数,但你的lr_load_dll 在vuser_init中,而你的变量在Action中不知道这样是否可行.如果都在Action中是没有问题的.
作者:
镭镭
时间:
2008-9-9 13:56
如果把 lr_load_dll("DLL名")写在ACTION里,那么每次执行ACTION的时候就会加载一次DLL,对性能没影响吗?有没完整的格式推荐一种啊
作者:
镭镭
时间:
2008-9-9 14:07
如果之前定义了一个类,如 TCoop = class(TAutoObject, ICoop)
DLL里的函数部分是写成:
function TCoop.GetFile(const SvrFileName, LclFileName: WideString; OnProgress: Integer): Integer;
那么我们在传参时用的是变量=TCoop.GetFile(参数1,参数2,参数3)吗
====================
是否要把DELPHI里的DLL搞成COM吗?
在C++里面只有类的静态函数才能够直接被使用,一般函数是不能直接被调用的
[
本帖最后由 镭镭 于 2008-9-9 14:34 编辑
]
作者:
aks5201314
时间:
2008-9-9 15:38
如果你的被测应用也部署在本机上,在测试过程中加载DLL会有影响的.至于你说的调用DLL文件中的函数,把返回值赋给一个变量以DLL文件中写的函数为准,如果被调用的函数存在上下文联系,那应该都封装在一个DLL文件中.
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2