delphi的dll中自定义的类如何在调用程序中实例化?

a1241224556 2009-10-01 08:00:58
unit Unit1;

interface
type
Module=class
published
function ReadTest: integer;
procedure WriteTest(const Value: integer);
published
property Test:integer read ReadTest write WriteTest;
end;
ModuleClass=class of Module;


implementation

{ Module }

function Module.ReadTest: integer;
begin
result:=Test;
end;

procedure Module.WriteTest(const Value: integer);
begin
Test:=value;
end;

end.

  function GetModule():ModuleClass;stdcall;
begin
result:=Module;
end;

上边两个是在dll中定义的.
function GetModule():ModuleClass;far;external 'Project3.dll';

procedure TForm4.Button1Click(Sender: TObject);
var
m1:ModuleClass;
m:Module;
begin
//

m1:=GetModule();

m:=m1.Create() as Module;
m.Test:=100;
end;

像上边这样行吗?
我实际调用的时候.内存溢出了.好像.不知道咋做!!
...全文
201 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1241224556 2009-10-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 seamour 的回复:]
不用 interface 会产生许多麻烦,光一个内存管理就够呛的了,再弄点儿 is/as 的运算,除了维护这些问题不用干别的了
[/Quote]
呵呵.我这个dll只有类和属性.没有方法.是为是个module的dll.就是定义一些数据表对象用于在各层之间游走.我不想用包bpl来实现.如果这样的话.不是每个数据表对象都要一个接口!
这就是我使用包的问题:http://topic.csdn.net/u/20090930/18/7098631d-5612-46bd-bbd3-748b1149de8e.html
^_^
Seamour 2009-10-01
  • 打赏
  • 举报
回复
不用 interface 会产生许多麻烦,光一个内存管理就够呛的了,再弄点儿 is/as 的运算,除了维护这些问题不用干别的了
阿发伯 2009-10-01
  • 打赏
  • 举报
回复
使用COM接口吧
a1241224556 2009-10-01
  • 打赏
  • 举报
回复
我晕.看到有回复.好高兴.但我担心的事还是发生了......
贝隆 2009-10-01
  • 打赏
  • 举报
回复
学习

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧