我想从自定义函数里得到多个结果怎么办?急!谢谢各位老兄!(100分)

  • 主题发起人 小马哥
  • 开始时间
用var参数吧!
 
不知用數組可以嗎?
 
请具体写一段好吗?非常感谢!
 
我是用 BCB的,定义一个结构,
然后返回这样的一个结构就可以了。
 
我比较喜欢使用var参数
可以从函数和过程中带出n个信息
但是程式的可读性不是太好
因为我很懒,从不为函数返回值定义结构
 
//从程式中返回3个随机数
function test(var Num1,Num2:Longint):Longint;
begin
Num1:=Random(100);
Num2:=Random(100);
test:=Random(100);
end;

//要么,这样更好些(使用过程)
procedure test(var Num1,Num2,Num3:Longint);
begin
Num1:=Random(100);
Num2:=Random(100);
Num3:=Random(100);
end;
 
我觉得如果几个参数联系不是很紧密的话
就没有必要为他们定义一个记录, 用var
又方便, 有直观, 否则,盗用前后都要先/赋值
烦不烦?
 
用VAR定义的参数是在调用时,是传地址的,不是传数值
跟C++中的引用意义是一样的
 
呵呵,已经很全了,估计也就这两种方法吧。
 
定义一个结构体,将要传递的参数放入结构体中传出。
type
TParamOut=record
Param1:Integer;
Param2:Integer;
end;

function MyFunction:TParamOut;
var
P:TParamOut;
begin
P.Param1:=1;
P.Param2:=2;
Result:=P;
end;

 
用结构体.
type
Tfilename=recorde
ffilename:string ;
pfilename:string ;
end;
.
.
function findfile(var files:sting):tfilename;
var
filename:Tfilename;
s,i:integer;
begin
s;=pos(files,.);
shu[100]:=files;
for i=0 to sdo

begin
if shu='/' then
pfilename:=copy(files,i,lenght(files));
ffilename:=files-Pfilename;
end;
result:=filename;
end;
仅供参考

 
可以结束问题了!
已经说得很详细了!
 
也许最苯的办法也是最实用的,为什么不试试分开定义呢?
如function fun1;function fun2;function fun3;
这样也便于程序的调试。
 
用procedure 最方便
赞同slfeng 朋友做法
 
结束问题吧
 
也可以使用全局变量,但是很不安全。不推荐!
 
定义全局变量的确不太安全,用VAR从函数返回数据很常用,不过随着参数的增多,使用起来不太方便,建议自定义结构,(如记录类型)。有关代码上面已经很多了,我这就不再灌水了。^o^
 
你可以试一试返回一个结构体。
 
时间太久,强制结束。 wjiachun
 
顶部