直接将数组当作参数的: 动态 定义 TRcdParamArray = array of integer; function www(VAR RcdParamarray:TRcdParamArray):boolean; var iCount:integer; begin iCount:=Length(RcdParamarray);//数组长度 ... ... end; 静态 RcdParamArray : array[0..1] of integer =(1,2); function www(PRcdParamData:PByte;iCount,iItemLen:integer):boolean; var p:Pbyte; data1,data2,iReadLen:integer; begin p:=PRcdParamData; move(p^,data1,iItemLen);// Inc(p,SizeOf(integer)); move(p^,data2,iItemLen);// end;..... .. www(Pbyte(@RcdParamArray ),2,SizeOf(integer));随便写下,乱乱的,反正就是用指针传参吧。
抄个现成的:问:我用procedure Proc(var A:array[1..10] of integer);怎么都不能编译通过,难道Delphi不能传递数组作为参数吗?答:必须先用Type定义一下即可: type TProcArray=array[1..10] of integer;procedure Proc(var A:TProcArray); 这样就没有问题了,而且对于动态数组也可以用上面的方法!使用动态数组的时候,有一个问题是如何遍历每一个数据项?采用类似的代码即可: procedure Proc(var A:TProcArray); var i:integer; begin .... for i:=Low(A) to High(A) do /// A[i]就是每一个数据项 .... end;
这样就可以了吧
动态
定义
TRcdParamArray = array of integer;
function www(VAR RcdParamarray:TRcdParamArray):boolean;
var
iCount:integer;
begin
iCount:=Length(RcdParamarray);//数组长度
...
...
end;
静态
RcdParamArray : array[0..1] of integer =(1,2);
function www(PRcdParamData:PByte;iCount,iItemLen:integer):boolean;
var
p:Pbyte;
data1,data2,iReadLen:integer;
begin
p:=PRcdParamData;
move(p^,data1,iItemLen);//
Inc(p,SizeOf(integer));
move(p^,data2,iItemLen);//
end;.....
..
www(Pbyte(@RcdParamArray ),2,SizeOf(integer));随便写下,乱乱的,反正就是用指针传参吧。
type
TProcArray=array[1..10] of integer;procedure Proc(var A:TProcArray);
这样就没有问题了,而且对于动态数组也可以用上面的方法!使用动态数组的时候,有一个问题是如何遍历每一个数据项?采用类似的代码即可:
procedure Proc(var A:TProcArray);
var
i:integer;
begin
....
for i:=Low(A) to High(A) do
/// A[i]就是每一个数据项
....
end;