我在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
答案 0 :(得分:1)
首先是简单的比特:
现在到字符串数组。从@ TLama的链接看来,数组无法编组。所以,你必须连接它们,也许使用双空终止字符串。或者多次调用该函数并允许DLL将字符串收集到数组或列表中。