activex调DLL在网页上调用.

在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;


除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: delphi activex
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.