activex调DLL在网页上调用.

摘要: 在ACTIVEX中调用DELPHI 写的DLL, 网上有很多说要在DRP文件中第一个必须use shareMem 单元。这样就不会报错,其实不然,在调用时,不会报错,在关闭应用程序时,就报错了,所以没有根本解决问题。其实是可以不用use shareMem 的,即使有函数返回值,如果返回值是string ,将它改成pchar 吧。这样通用性强很多的。其实调用早就成功的,很简单的,但我一直忽略了 pchar 这个东西,导致调用到最后出异常,虽然结果是对的,但用户看到就不好了。

在ACTIVEX中调用DELPHI 写的DLL, 网上有很多说要在DRP文件中第一个必须use shareMem 单元。这样就不会报错,其实不然,在调用时,不会报错,在关闭应用程序时,就报错了,所以没有根本解决问题。

其实是可以不用use shareMem 的,即使有函数返回值,如果返回值是string ,将它改成pchar 吧。这样通用性强很多的。

其实调用早就成功的,很简单的,但我一直忽略了 pchar 这个东西,导致调用到最后出异常,虽然结果是对的,但用户看到就不好了。

比如:
library MyUserLogin;
{测试 java 调用 delphi的 dll 方法及过程
lzs
2009-11-16
}
uses
SysUtils,
Classes;

{$R *.res}

function GetMyInfo():pchar;stdcall;
begin
result:='OOOOOO--中文';
end;

exports
GetMyInfo;

begin
end.

在activex中动态调用:
先申明
TGetInfo =function():pchar; stdcall;

procedure TActiveFormX.Button2Click(Sender: TObject);
var
mystr: pchar;
Func: TGetInfo;
begin
//======调用DLL获取信息=================
try
myHandle:=loadLibrary('MyUserLogin.dll');
if myHandle<>0 then
begin
showmessage('you dll');
@Func := GetProcAddress(myHandle, pchar('GetMyInfo') );
// if assigned(@Func) then
mystr:=Func();
showmessage(pchar(mystr));
end;

finally
showmessage('begin free library');
FreeLibrary(myHandle);
end;
showmessage('55555');
//======END=============================
end;

上一篇: java 中直接调用EXCEL,WORD打开指定文件
下一篇: activex和javascript交互(delphi版本)
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号