搜索一下,有人说用数组可行,都不太完整
哪位知道的,丢点实例代码来

解决方案 »

  1.   

    //结构体定义
    TRec = record
      a: string;
      b: integer;
    end;//--函数返回结构体
    function test(a: string):TRec;
    var
      rec: TRec;
    begin
      rec.a:= 'a';
      rec.b:= 1;
      Result:=rec;
    end;
    //---调用
    var
      rec: TRec;
    begin
      rec:= test('aaa');
      showmessage(rec.a);
    end;
      

  2.   

    同意月亮的做法,不過在數據操作中,經常Variant  建立數組來做。
      

  3.   

    上面的已经说了 返回结构体那我说下数组吧
    //--整形数组
    procedure test(a: integer;var b:array of integer);
    begin
      b[0] := a;
      b[1] := a + 1;
    end;//---调用
    var
     var c:array[0..10] of integer
    begin
     test(1,c);
     showmessage(inttostr(c[0]));
     showmessage(inttostr(c[1]));
      

  4.   

    定义自己的返回值结构Record,参考一楼月亮的代码或者以特定符号连接各个返回值,读取时,根据分隔符拆分或者将返回值存入list中,其实类似上一条方法或者传入多个var参数,并返回
    .
    .
    .
    .
      

  5.   

    type
      sbxx_yx=packed record
        tymc:string;//图元名称
         sbbh:string;//设备编号
         zt:string;//是否取反
         yx:Integer;//是否始终取遥信状态
         cklx:Integer;//测控类型
      end;var
      vg_yxsb:array[0..1000] of sbxx_yx;//遥信设备列表,下标为遥信点号function getyxsbxx;
    var
      i:integer;
    begin
      data.ADOQuery1.Close;
      data.ADOQuery1.Connection:=data.ADOConnection1;
      data.ADOQuery1.SQL.Clear;
      data.ADOQuery1.SQL.Add('select * from Tzhk_sjdy_dsf');
      data.ADOQuery1.Open;
      data.ADOQuery1.First;
      while not data.ADOQuery1.Eof do
      begin
        i:=data.ADOQuery1.FieldByName('id_dsf').asinteger;
        self.vg_yxsb[i].tymc:=data.ADOQuery1.FieldByName('tymc').AsString;
        self.vg_yxsb[i].sbbh:=data.ADOQuery1.FieldByName('sbbh').AsString;
        ...
        data.ADOQuery1.Next;
      end;
      
    end;