如何使自定义函数有多个返回值?

时间:2022-01-17 20:37:28
我要用一个函数返回多个字符串参数,是否通过设置返回类型为数组型来实现。请高手给段代码。

5 个解决方案

#1


你用tstrings 等类型的参数不就可以了

#2


用记录或者类类型来返回就行啦。

#3


可以用var参数
procedure GetStrings(parm1,parm2,...:参数; var par1, par2,...:返回的参数);
函数中给par1, par2等赋值就行了。
procedure GetStrings(iTmp: Integer; var str1, str2; string);
begin
  str1 := IntToStr(iTmp div 10);
  str2 :- IntToStr(iTmp mod 10);
end;
调用时
GetStrings(12, strFirst, strSecond);

#4


给你一段代码
试过了

function aaa:strs;
begin
   setlength(result,100);
   result[0]:='1111';
   result[1]:=('2222');
   result[2]:=('3333');
   result[3]:=('4444');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   showmessage(aaa[3]);
end;


要先定义
strs = array  of string;

#5


procedure GetStrings(Par:Tstringlist;Var Res:TstringList);
begin
.
.
.
end;
调用
var 
 P:Tstringlist;
 R:Tstringlist;
begin
 try
  P:=Tstringlist.create;
  R:=Tstringlist.create;
  GetStrings(P,R);
  ..
  .. 
 
  finally
    P.free;
    R.free;
  end;

end;

#1


你用tstrings 等类型的参数不就可以了

#2


用记录或者类类型来返回就行啦。

#3


可以用var参数
procedure GetStrings(parm1,parm2,...:参数; var par1, par2,...:返回的参数);
函数中给par1, par2等赋值就行了。
procedure GetStrings(iTmp: Integer; var str1, str2; string);
begin
  str1 := IntToStr(iTmp div 10);
  str2 :- IntToStr(iTmp mod 10);
end;
调用时
GetStrings(12, strFirst, strSecond);

#4


给你一段代码
试过了

function aaa:strs;
begin
   setlength(result,100);
   result[0]:='1111';
   result[1]:=('2222');
   result[2]:=('3333');
   result[3]:=('4444');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   showmessage(aaa[3]);
end;


要先定义
strs = array  of string;

#5


procedure GetStrings(Par:Tstringlist;Var Res:TstringList);
begin
.
.
.
end;
调用
var 
 P:Tstringlist;
 R:Tstringlist;
begin
 try
  P:=Tstringlist.create;
  R:=Tstringlist.create;
  GetStrings(P,R);
  ..
  .. 
 
  finally
    P.free;
    R.free;
  end;

end;