您的位置:首页 > 其它

函数返回数组怎么调用啊?

2009-01-04 16:48 555 查看
函数返回数组怎么调用啊? 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)的方法实现的,我的是动态数组
谢谢各位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: