我在一个中定义了一个函数
procedure S(var a: array of integer);
var
k: array of integer;
begin
k:= @a ;
SetLength(k,1);
k[0] := 1;
end;我在一个exe文件中写
var
a: array of integer;
begin
SetLength(a, 0)
S(a);//调用DLL中的函数,给数据长度加1,
ShowMessage(IntToStr(Length(a))); //结果显示为0,为什么不是1呢
end
procedure S(var a: array of integer);
var
k: array of integer;
begin
k:= @a ;
SetLength(k,1);
k[0] := 1;
end;我在一个exe文件中写
var
a: array of integer;
begin
SetLength(a, 0)
S(a);//调用DLL中的函数,给数据长度加1,
ShowMessage(IntToStr(Length(a))); //结果显示为0,为什么不是1呢
end
type
TMyArray: array of integer;
...
procedure S(aArray: TMyArray);
直接用数组不行
另外,可能调用S之前要用setLength给a分配空间。
或者直接返回function S: TMyArray;
type
TMyArray: array of integer;
现在是可以了
但是改成
TMyArray: array of TStrings;
就又不行了
建议你传链表,想用多大就new一个出来,然后挂在后面就可以了