delphi写DLL ,返回变量为strilglist,问如何写调用才不会出错

williamljy 2003-12-07 09:47:34
返回变量为strilglist,问如何写调用才不会出错
...全文
27 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seahilly 2003-12-07
  • 打赏
  • 举报
回复
TStringList是一个可以其实例独立存在的类,着与TStrings不同。如果你的从DLL的函数中返回一个TStringList的实例(实际是指针),那么,我个人认为:
1、在发出调用的程序中要预先说明一个TStringList变量,如:
Var TheStringList; TStringList;
2、发调程序执行DLL函数调用:
TheStringList:=DLL_StringListFunction(......);
3、在发调程序执行DLL函数调用后,所有引用使用TheStringList,不能在调DLL函数,因为你每次调用都会引起“DLL函数”重新构造一个TStringList对象实例,而上次建立的实例就被丢弃了(找不到,还会引起内存泄露)。

Seahilly 2003-12-07
  • 打赏
  • 举报
回复
对不起,前贴有几个错字:
TStringList是一个类,它的实例可以独立存在,这与TStrings不同。如果你是从DLL的函数中返回一个TStringList的实例(实际是指针),那么,我个人认为:
1、在发出调用的程序中要预先说明一个TStringList变量,如:
Var TheStringList; TStringList;
2、发调程序执行DLL函数调用:
TheStringList:=DLL_StringListFunction(......);
3、在发调程序执行DLL函数调用后,所有的引用都要使用TheStringList,不能再调DLL函数(除非你又需要一个新的实例),因为你每次调用都会引起“DLL函数”重新构造一个TStringList对象实例,而上次建立的实例就被丢弃了(找不到,还会引起内存泄露)。
tonylk 2003-12-07
  • 打赏
  • 举报
回复
用runtime bpl
或者sharemm。
21stboy 2003-12-07
  • 打赏
  • 举报
回复
关注!

5,388

社区成员

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

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