delphi中的多值返回

    技术2025-12-18  10

    1.       Return a record

    Type

    TmyData = Record 先定义一个Record有三个返回值

    Data1: string;

    Data2: string;

    Data3: string;

    end;

    private

    { Private declarations }

    function Myfunction(parm: string): TMydata; //定义一个function, parm 参数自定

    //定义 function的代码

    function Tform1.Myfunction(parm: string): TMydata;

    var MyData1: TMydata;

    begin

    MyData1.Data1:= 'This is Data1:'+parm;

    MyData1.Data2:= 'This is Data2:'+parm+parm;

    MyData1.Data3:= 'This is Data3:'+parm+parm+parm;

    result:= MyData1;      //传回为一个记录record

    end;

    //函数传值实例

    procedure TForm1.Button1Click(Sender: TObject);

    var

    MyreturnData: TmyData;                 // 定义一个要接收的record

    Begin

    MyreturnData:= Form1.Myfunction('A');  // 指定回传值

           //显示出三個值

    showmessage(MyreturnData.Data1);

    showmessage(MyreturnData.Data2);

    showmessage(MyreturnData.Data3);

    end;

     

    2.       Return an array (or variant array)

    //function 传回动态数组范例:

    Type

    k=array of integer;

     

    function abc(i:integer):k;

    var

    j:integer;

    begin

    SetLength (result,5);

    for j:=0 to i do

    result[j]:=j;

    end;

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    self.Caption := inttostr(abc(5)[5]);

    end;

     

    3.       Using var/out parameters, e.g.

    例如将日期分拆为年月日的系统函數 DecodeDate 是这样定义的 :

    procedure DecodeDate(const DateTime: TDateTime; var Year, Month, Day: Word);

    你可看到 Year, Month, Day 之前有个 var ,就是在这个 procedure 內修改到这三个变量会直接反映在调用这个函数所输入的变量里。

    应用实例 :

    procedure TForm1.Button1Click(Sender: TObject);

    var

    zDay, zMonth, zYear : word;

    begin

    DecodeDate(Now,zYear,zMonth,zDay);    //已将 Now 的年月日分拆并存到变量

    ShowMessage(Format('现在是%d%d%d',[zYear,zMonth,zDay]));

    end;

    最新回复(0)