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

  • 主题发起人 主题发起人 larryuan
  • 开始时间 开始时间
L

larryuan

Unregistered / Unconfirmed
GUEST, unregistred user!
情况是这样的,我用Delphi开发DLL,这个DLL要接收调用者的若干参数,
但这些参数的个数不一定,有可能是0个,有可能是多个,
我应该如何定义这个参数类型呢?

我想了一下,用TStringList类型,把各个参数都Add进去,
但这样有两个弊端:
1.Delphi做的dll如果含有string类型,就必须要把barland的BORLNDMM.DLL
一同发布出去,感觉不好(borland都推荐不用string用PChar)
2.我的DLL的调用者不一定是Delphi开发的,有可能是其它语言的开发的,
那么其它语言比如VC、PB是否有与TStringList相对应的类型呢?
 
传递一个指针数组和一个数组的元素数
var argCount: Integer; argData : PChar;
 
1.用pchar
2.用pchar of array
 
可以用pchar,
举例:
var
tags: pchar;
begin
tags := pchar('hello, world'+#0+'hello, boy'+#0);
if tags<>nil then
begin
while (tags^)<>#0 do
begin
ListBox1.Items.Add(tags); //writeln(tags);
tags := tags + length(tags) + 1;
end;
end;
end;
--------------------------------------
C:
char *tags=....

if (tags)
while (*tags) {
printf("%s/n",tags); // display the tag
tags+=strlen(tags)+1; // move on to next tag
}

 
Dll中导出的函数参数的类型可以是VCL中定义的类吗?比如TStringList
好像不行吧?

能不能定义一个PChar的结构,放在一个公用unit里,Dll和主程序都引用这unit
 
to Grape:
Delphi的DLL直接可以传VCL对象或自定义对象,问题就是要找到其它语言对应的类型

以上几位基本上都是建议用PChar数组,还有没有更好的解决方法呢?
如果没有,等会儿就结帐了

to zw84611:
有没有PChar数组的例子呢?
 
用两个参数:指针和个数
 
to jsxjd:
对,最好能这么用,能给个用指针和个数的例子吗?谢谢
 
你该自己动手试一下,不能什么都让别人给出代码。

Count: integer;
Para: array[0..255] of pchar;
-------------------------
int Count;
char *Para[256]

这是个笨办法,其实你用Count和一个pchar指针就可以了,如我前面所写。
 
多人接受答案了。
 
后退
顶部