我自己写了一个function,要想同时返回三个double类型的数值,请问怎么实现呢?
解决方案 »
- 【求助】用delphi设计一个公司局域网的监控系统
- 如何得到cursor的热点?
- 散分罗!~~~~ 顶者有份, 托盘简单问题。
- 在过20分钟就我生日了,在这里散分庆祝!!!!!!!!!!同时也各位青年节快乐
- 在panel上画矩形框?
- delphi中能不能SQLConfigDataSource给access数据库建立别名?
- 请问一下tdataset.LOCATE为什么有时能正确定位,有时却不行(有时中文LOCATE)
- 寻找Delphi的语法、函数、程序结构等
- 获取弹出子窗体句柄的API函数?
- 罗德与施瓦茨频谱仪fsv-k30怎么通过LAN远程控制连接
- 关于dblistbox中的数据怎么保存到数据库里
- 如何在PrintDBGridEh打印,加入页码
begin
aa:=......
bb:=......
cc:=.....
result:=......
end;
//---------------------------------------------
...以下是调用
var
aatrue,bbtrue,cctrue,ddtrue:double;
begin
aatrue:=...
bbtrue:=...
cctrue:=...
ddtrue:=abc(aatrue,bbtrue,cctrue);
end;
//仓促写的,没有用大小写母,不好看,见谅
begin
aa:=12.6;
bb:=88.89;
cc:=2345.907;
result:=aa+bb+cc;
end;procedure TForm1.Button2Click(Sender: TObject);
var
aatrue,bbtrue,cctrue,ddtrue:double;
begin
aatrue:=0.0;
bbtrue:=0.0;
cctrue:=0.0;
ddtrue:=abc(aatrue,bbtrue,cctrue);
memo1.Lines.Add('以下是四个变量新值:'+floattostr(aatrue)+','+floattostr(bbtrue)+','+floattostr(cctrue)+','+floattostr(ddtrue));
end;结果:
12.6,88.89,2345.907,2447.397
能写具体点吗?那三个返回值我是想分别得到的.
function THHUCoord.GetParams();
begin
C_LT_L;
C_LA_B;
C_HI_H;
end;
要么就返回一个记录(结构体)
aa:...;
bb:...;
cc:...;
end;function abc(var aa,bb,cc:double):IWantData ;//共相当于返回3个double值
var
ret: IWantData;
begin
ret.aa:=......;
ret.bb:=......;
ret.cc:=.....;
result:=ret;
end;
强烈鄙视技术问题解决后把贴子转移到非技术区的人!
鄙视你们!http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659
TTwo = record
x : String;
y : String;
z : String;
end;Procedure FunOne(var a,b,c :integer); //传址(引用、别名)
begin
a := 9; //给三个变量赋值
b := 8;
c := 7;
end;function FunTwo(InStr :string) :TTwo; //返回记录
var tempRec :TTwo;
begin
temp.x := copy(InStr,1,1);
temp.y := copy(InStr,2,1);
temp.z := copy(InStr,3,1);
result := tempRec;
end;procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c : integer;
InStr : String;
begin
a := 0;//初值
b := 0;
c := 0;
funOne(a,b,c);
//测试经FunOne处理后(相当于“返回”)的a,b,c值变为9,8,7
showmessage(inttostr(a)+','+inttostr(b)+','+inttostr(c)); InStr := 'xyz';
//测试FunTwo()返回的3个记录成员值 x,y,z
showmessage(FunTwo(InStr).x+','+FunTwo(InStr).y+','+FunTwo(InStr).z);
end;//上面两种方法,如果说第一种用“引用”做参数的方法只是相当于返回多值的话,那第二种,用记录,则是真正返回多值
temp.y 改为 tempRec.y
temp.z 改为 tempRec.z
的确实现了, 多个值的改动。------------------
不过, 钻牛角的话, 这算不得 “返回多个值”的,传地址调用的时候,只能说是,改变了 3 个值, 而只返回了 1 个变量 的
返回结构体,也是一个变量的,只是这个变量还是一个结构体??
不知道 Dephi 或 别的语言中, 有没有真正 返回多个值 的
你试试C++,很多类型必须要明确使用指向类型的指针才能作为函数的返回值。
只是为了方便给一个返回值而已。
最后都是指针;
还是用VAR吧!
begin
Result:=VarArrayCreate([0,2],varInteger);
Result[0] := 0;
Result[1] := 1;
Result[2] := 2;
end;
TmyType = array [0..2] of integer;
function myText(...):TmyType;
begin
Result[0] := 1;
result[1] := 1;
result[2] := 0;
end;