dephi自定义函数可以有2个返回值吗,该如何解决
dephi自定义函数可以有2个返回值吗
1.在用自定义函数时(function),可以返回2个以上的返回值吗,谢谢.
例
function test(x: String;): Extended;
var
a,b :Extended;
begin
if x= 'ok ' then
begin
a := 10;
b := 20;
end
else
begin
a := 20;
b := 30;
end;
//只能返回
Result :=
end;
但我想分别返回a和b的值.
2.看其他的编程工具貌似可以返回数组,不知道delphi可以返回吗?
------解决方案--------------------
可以定义一个record
aa = record
a:Extended;
b:Extended;
end;
function test(x: String;): aa ;
------解决方案--------------------
还可以用参数传址....
procedure Test(VAR a,b,c,d : integer);
begin
a:=2;
b:=3;
//....在过程中对参数的操作将直接影响a b c d
end;
procedure Button1onclick(sender:tobject);
var
a,b,c,d : integer;
begin
test(a,b,c,d);
end;
------解决方案--------------------
function farray(...): array of integer;
var
fa:array[0..5] of integer;
begin
...
result := fa;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
type NewRet=array[0..5] of integer;
function farray(...): NewRet;
var
fa:NewRet;
begin
...
fa[0] := ...;
...
result := fa;
end;
------解决方案--------------------
type
NewRet = array[0..5] of integer;
function farray(xx: String): NewRet;
begin
if xx= 'ok ' then
begin
Result[0] := 10;
Result[1] := 20;
end
else
begin
Result[0] := 30;
Result[1] := 40;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
fa : NewRet;
begin
fa := farray( 'ok ');
Label1.Caption := IntToStr(fa[0]);
Label2.Caption := IntToStr(fa[1]);
end;
1.在用自定义函数时(function),可以返回2个以上的返回值吗,谢谢.
例
function test(x: String;): Extended;
var
a,b :Extended;
begin
if x= 'ok ' then
begin
a := 10;
b := 20;
end
else
begin
a := 20;
b := 30;
end;
//只能返回
Result :=
end;
但我想分别返回a和b的值.
2.看其他的编程工具貌似可以返回数组,不知道delphi可以返回吗?
------解决方案--------------------
可以定义一个record
aa = record
a:Extended;
b:Extended;
end;
function test(x: String;): aa ;
------解决方案--------------------
还可以用参数传址....
procedure Test(VAR a,b,c,d : integer);
begin
a:=2;
b:=3;
//....在过程中对参数的操作将直接影响a b c d
end;
procedure Button1onclick(sender:tobject);
var
a,b,c,d : integer;
begin
test(a,b,c,d);
end;
------解决方案--------------------
function farray(...): array of integer;
var
fa:array[0..5] of integer;
begin
...
result := fa;
end;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
type NewRet=array[0..5] of integer;
function farray(...): NewRet;
var
fa:NewRet;
begin
...
fa[0] := ...;
...
result := fa;
end;
------解决方案--------------------
type
NewRet = array[0..5] of integer;
function farray(xx: String): NewRet;
begin
if xx= 'ok ' then
begin
Result[0] := 10;
Result[1] := 20;
end
else
begin
Result[0] := 30;
Result[1] := 40;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
fa : NewRet;
begin
fa := farray( 'ok ');
Label1.Caption := IntToStr(fa[0]);
Label2.Caption := IntToStr(fa[1]);
end;