DLL和EXE之间怎样传递记录数组

dulei115 2005-11-03 02:31:12
type
Taa = record
...各项数据类型不确定,可以是基本类型,也可能是类
end;
Tbb = array of Taa;

我试过下面的都不行,DLL中的定义如下:
1.procedure test(var vbb: Tbb);
2.function test: Tbb;
把Tbb改定义为 array[0..9] of Taa (即静态数组)也不行
-------------------------------
有谁知道怎么实现?????
...全文
295 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dulei115 2005-11-08
  • 打赏
  • 举报
回复
烦,还是没人知道 遍历DLL中的Form 的答案,没时间等了,改用手动维护动态数组了,结贴
dulei115 2005-11-04
  • 打赏
  • 举报
回复
我想用代码自动实现,不想自己去维护,不知道有没有????
cncharles 2005-11-04
  • 打赏
  • 举报
回复
这样改, 晕你还是星星来着
type
Taa = record
.............
end;
Tbb =^Taa
接口声明
procedure test(var vbb: Tbb);
function test: Tbb;
var
aa:Taa;

implementation

procedure test(var vbb: Tbb);
begin
vbb:=@aa;
end;

function test: Tbb;
begin
Result:=@aa;
end;




***********************************
高级群号:16497064欢迎编程高手加入.
***********************************



linzhengqun 2005-11-03
  • 打赏
  • 举报
回复
去Application传进DLL中不知可以否,没有试过不错。
但遍历DLL中的Form并不难吧,你可以自己维护一张连表啊。
dulei115 2005-11-03
  • 打赏
  • 举报
回复
Sorry!!!!!!!!!!!Very Soory!!!!!
dulei115 2005-11-03
  • 打赏
  • 举报
回复
谢谢楼上多回答!
是我自己弄错了一个地方
在Library中Form并不包含在Application.Components
---------------------------------------------------------
有谁知道怎样遍历DLL中的Form,类似Project中的下面的代码
for i := 0 to Application.ComponentCount - 1 do
if Application.Components[i] is TForm then
//use (Application.Components[i] as TForm)
Maple119 2005-11-03
  • 打赏
  • 举报
回复
如果使用string数据类型,有时候会报错.其它数据类型则未见有错误.
至于sharemem单元,我有使用,但未解决.应该是我的功力底的原因.
linzhengqun 2005-11-03
  • 打赏
  • 举报
回复
另外,看一下帮助ShareMem,对你一定有很多启发的。
linzhengqun 2005-11-03
  • 打赏
  • 举报
回复
我是这样认为的:Array of动态数据是生命期自动管理的,和String很类似,而DLL的导出函数有String类型的必须变成PChar,或加入ShareMem这个单元。你可以从这个方面去考虑,也许它的内存管理和String也是一样的,所以从DLL导出的时候可能就会有问题。

另外,我建议动态数组换成TList,从DLL传出来时就一个指针,处理起来更方便。
dulei115 2005-11-03
  • 打赏
  • 举报
回复
都有该记录的声明
chinasdp 2005-11-03
  • 打赏
  • 举报
回复
**?

在DLL和EXE中都有该记录的声明就可以了。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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