将一个字符串数组从vfp发送到在delphi上创建的dll

时间:2013-12-12 12:58:58

标签: arrays delphi dll visual-foxpro

我在Delphi中创建了一个DLL,它必须接收其他参数,一个来自Visual Fox Pro的字符串数组。

我尝试了不同的方式来发送数据,但通常我得到的是“声明DLL调用导致异常”,我不确定问题是否是我在VFP上发送的变量类型或者我在Delphi上收到的类型。

我们已尝试从VFP发送字符串数组

Local arString[3]
arString[1] = 'Text1'
arString[2] = 'Text2'
arString[3] = 'Text3'

Declare integer callDLL in (dllfile) string, string, string
CallDLL('firstvar', 'secondvar', arString)

和Delphi:

type Str: Array[1..3] of string;
function CallDLL(firstvar, secondvar: PAnsiChar; S: Str):Integer; stdcall ;
begin
ShowMessage(S[0]) ;
...
end;
exports CallDLL ;    

在添加字符串数组之前,DLL工作正常,因此不是其他参数的整体构造。

知道我做错了什么?

谢谢, TZ

1 个答案:

答案 0 :(得分:1)

首先是简单的比特:

  • 您的Delphi函数需要返回一个整数。
  • 字符串参数错误。 Delphi字符串是一种托管私有Delphi类型。那些参数应该是PAnsiChar,指向以空值终止的B位字符数组的指针。

现在到字符串数组。从@ TLama的链接看来,数组无法编组。所以,你必须连接它们,也许使用双空终止字符串。或者多次调用该函数并允许DLL将字符串收集到数组或列表中。