函数返回数组怎么调用啊? VCL组件开发及应用http://www.delphi2007.net/DelphiVCL/html/delphi_20061221095617231.html
type
a_nx =array of Integer;
function Func_getnx(CYbh: string; cNy: string;var sErr: string): a_nx;
客户端程序中我怎么调用这个函数啊?我申明了一个整数数组好像不行?
急!在线等!
function里面怎么还有"var"的部分呢?
----------------------------------------------------
type
a_nx =array of Integer;
var x: a_nx
function Func_getnx(CYbh: string; cNy: string): a_nx;
begin
//....
end
x := Func_getnx;
搞错了,请无视上贴横线上面的话 -_-
不过赋值应该没问题的?
看你函数中如何对数组进行操作的 有没有动态设置一下数组的长度!
这种设计是错误的
你要返回数组应用开放数组作参数
type
a_nx =array of Integer;
function Func_getnx(CYbh: string; cNy: string;var sErr: string;anx :array of Integer):boolean;
调用时传个数组进去就行了
这样结构保证,谁使用谁申请空间谁释放
Func_getnx 中 使用low(anx) 与 High(anx)来取数组下标范围 (因为Delphi 可以array[x..y]滴
如果你一定要返回数组哪比较麻烦
a_nx =array of Integer;
function Func_getnx(CYbh: string; cNy: string;var sErr: string): Pointer;
begin
GetMem(Result,iNeed * Sizeof(Integer); // 申请堆空间
///do....
end;
使用时
更加麻烦 Delphi好像不能给数组指针给值
useanx: a_nx;
setlength(a_nx,needsize);
aPointer := Func_getnx.....
Copymemory(useanx,apointer,CopySize);
然后才能 useanx....
还要 Freemem(apointer,size);
我还是不大明白:
type
TArray1 = array of xxx;
var
a: TArray1;
function x(..):TArray1;
为何不能直接a:=x, 把函数x的引用传递给a呢? 我以前试过可以的.
函数不支持数组类型返回值,但支持记录类型返回值
你可定义一个记录类型:
type
TRecData = Record
a_nx: array of Integer
end;
然后:
function funName(Pn....): TRecData;
这样是可以的:
type
TArr = array of integer;
function abc(a:integer):Tarr;
var
tempArr:TArr;
begin
setlength(tempArr,2);
tempArr[0] := a;
tempArr[1] := a + 10;
result:=tempArr;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a : integer;
begin
a := 5;
showmessage(inttostr( abc(a)[0] )); //5
showmessage(inttostr( abc(a)[1] )); //15
end;
同意楼上,静态数组我没试过,但是动态数组肯定可以.
我就是用Harryfin(Harry)的方法实现的,我的是动态数组
谢谢各位