function Ttest.test(i:integer):array of string;
var
  myarr:array of string;
begin
  SetLength(myarr, i);
  myarr[0]:='test';
  Result:=myarr;
end;我想函数返回的结果为数组的形式,该如何办?

解决方案 »

  1.   

    procedure test(s:TstringList;i:integer);
      

  2.   

    procedure test(s:TstringList;i:integer);
      

  3.   

    type
      StrArray = array of string;function testarr(i:integer): StrArray;
    var
      myarr: StrArray;
    begin
      SetLength(myarr, i);
      myarr[0]:='test';
      Result:=myarr;
    end;
      

  4.   

    function test(i:integer):TStringList;
    var
      List : TStringList;
    begin
      List := TStringList.create;
      List... 
      Result:=List;
    end;
      

  5.   

    谢谢各位的回答
    TO: ahjoe(强哥)
    我想在另一个单元中使用这个函数运行时出现错该怎么处理?
      

  6.   

    unit unit1;interfaceuses
      SysUtils, DB, ADODB, Classes ;type
      StrArray = array of string;  Tunit = class  function testarr(i:integer): StrArray;在第二个单元
    unit2procedure TMainFrm.FormShow(Sender: TObject);
    var
      myarr3:array of string;
    begin
      myarr3:=ToolBoxs.testarr(2);
    end;出现
    56:Incompatible types的错误
      

  7.   

    上面都有人告诉你颁发了啊,传入已经创建的TStrings对象,在实现函数里添加具体的字符串值,外部调用很方便,而且对象的生命周期再管理上也很合理
    procedure fillStrings(AList : TStrings)
    begin
      for ......
      begin
        alist.add('你的字符串来源');
      end;
    end;使用时:
    FillStrings(ComboxBox1.items);
    FillStrings(memo1.lines);
    ............
    个人意见,仅供参考。
      

  8.   

    这样当然不行,虽然你有这么一句myarr3:array of string;但编译器并不知道myarr3是StrArray 类型,应该改为myarr3:StrArray ;就可以了。  即使你这样定义:
      type 
        a:array of string;
        b:array of string;
      编译器仍然认为a,b是不同的类型