大虾们,自定义函数如何返回数组?(100分)

  • 主题发起人 主题发起人 uu
  • 开始时间 开始时间
U

uu

Unregistered / Unconfirmed
GUEST, unregistred user!
我想自定义一个函数
like function processdif(LSFile1:string;LSFile2:string):array;<-这样似乎不行,但如何去做呢

 
可将数组定义为指针
Procedure processdif(Var ArrayValue: Point
LSFile1:string;LSFile2:string):
 
定义一个动态数组类型:
type
Ta=array of integer;

再用
function processdif(LSFile1:string;LSFile2:string):Ta;
 
TO amo
若要是静态的呢?
function processdif(LSFile1:string;LSFile2:string):XXXXX;
var kind:array [1..5] of integer;
....
 
定义见上.

test:ta;

test:=@kind;
test[1]:=1;
...
 
说说你的目的把,说不定不用象你那样定义。
我认为JAMES说的有道理,要不然直接传送
数组的地址给函数,在函数里面改变其里面的值。
 
我是想传出一个数组
若要是传出一个指针的话
该如何引用数组元素呢
(一维的怎么办,二维的呢?)
 
用指针也可以,不过要强制转化一把.
 
用指针甭管几维的数组都不成问题。
接上例,指针引用数组:@ArrayValue(x)
 
用Variant类型
在传递参数时用
VarArrayOf
读取时用
VarArrayDimCount
 
能不能说详细写呢?具体指针怎么引用数组
举个例子好吗?
 
在不一定要用virant叔祖时,不推荐使用。因为效率不高,只在OLE/COM类的应用中在是必要的
 
你其实就是想改变某个叔祖里面的值,是不是?
其实在DELPHI中,指针的引用没有C语言中这么方便,
如果可以不用指针,尽量不用指针的好。
以下的方法也许可以实现你的目的:
procedure procedure(var Myarray p[维数];。。。);
二维的也一样定义,然后你就可以在这个过程里面改变
叔祖P的值了。
 
即使是静数组也推荐不要用函数值的形式返回,用过程,VAR的参数表明该参数的指针不是很好吗?
 
我是想尽可能的少用全局变量,若用过程传入一个数组局变量
那么数组必然又是全局的了。





 
返回一个指向数组的指针不就得了? 不过调用者要负责释放这块内存.
例如:
type
TMyArr : array [0..1000] of integer;
PMyArr: ^TMyArr;
function processdif(LSFile1:string;LSFile2:string):PMyArr;

.....
 
若用过程传入一个数组局变量那么数组必然又是全局的了。
为什么必然又是全局的呢?不明白
 
Another_eYes:能否把数组引用的方法说的详细些呢?
 
for i := low(ReturnArray^) to high(ReturnArray^) do
begin
// access the ReturnArray's item.
end;
 
Another_eYes:
是这样做吗?
x:= ReturnArray^[0];
y:= ReturnArray^[1];
// access the ReturnArray's item.
 
后退
顶部