帮我想想在DLL中用什么类型的参数合适

larryuan 2002-11-19 03:40:32
情况是这样的,我用Delphi开发DLL,这个DLL要接收调用者的若干参数,
但这些参数的个数不一定,有可能是0个,有可能是多个,
我应该如何定义这个参数类型呢?

我想了一下,用TStringList类型,把各个参数都Add进去,
但这样有两个弊端:
1.Delphi做的dll如果含有string类型,就必须要把barland的BORLNDMM.DLL
一同发布出去,感觉不好(borland都推荐不用string用PChar)
2.我的DLL的调用者不一定是Delphi开发的,有可能是其它语言的开发的,
那么其它语言比如VC、PB是否有与TStringList相对应的类型呢?
...全文
26 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiyufo 2002-11-21
  • 打赏
  • 举报
回复
可以用动态数组,在DLL里的参数 a:array of string

主form 要传递确定的数组个数
cnsuyong 2002-11-20
  • 打赏
  • 举报
回复
如果楼主你所说的参数个数是0到N个,而N可能是数百甚至比65535还要大,那么显然应该将这些参数合并为一个参数。楼上的方法不失为一个有效方法。
如果楼主你所说的参数个数是0到N个,而N最多也就是10(或者说很有限吧),那么就用缺省参数吧。
如果你愿意使用消息(前提是你的DLL以及调用者都可以接收消息),那么就好办多了。调用者先获取DLL中接收消息的窗口句柄,然后调用者向DLL的窗口句柄发送参数序列,在发送参数序列之前和之后分别发送开始和结束消息,DLL在接收到结束消息后开始处理。当然,这需要你进行比较严格和全面的考虑,特别是程序间通信多对一的情况考虑。
最好还是象Win32 API中大多数参数传递那样,传递一个指针,该指针指向一块内存,该块内存中以约定的格式存储交换数据。
movingboy 2002-11-20
  • 打赏
  • 举报
回复
1.可以用定长ShortString数组(你的每个参数的长度不至于超过255个字符吧?)
2.将参数按某种方法拼成一个ShortString,在调用端用逆方法分解出来。这要保证拼结后的参数长度不超过255
办法或许拙劣,见笑见笑……
larryuan 2002-11-20
  • 打赏
  • 举报
回复
up

5,930

社区成员

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

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