Q&A

  • 배열을 리턴하고 싶습니다.
array of integer형을 리턴 하려면 어떻게 해야 하나요????


알려주세요 ㅠㅠ
1  COMMENTS
  • Profile
    착한천사 2007.01.21 04:04
    착한천사 김경록입니다..
    흠.. 이건 단지 syntax문제인 것 같네요..
    syntax를 어떻게 사용하느냐의 문제이므로..
    흠..

    일단.. type을 선언하시구요...
    그 type을 return 하게 하면 되겠군요..
    밑의 예제는 function이지만, 뭐.. procedure로 주고받고 해도 되겠습니다..
    대신.. 주고 받을때는 argument에 var를 붙여주심이 좋겠죠..


    <!--CodeS-->
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type arInteger = array of Integer;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
          function ReturnArray(): arInteger;
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    { TForm1 }

    function TForm1.ReturnArray: arInteger;
    var
        i: integer;
    begin
        SetLength(Result,10);
        for i:=0 to 9 do Result[i] := i+1;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
        i: integer;
        ar: arInteger;
    begin
        Memo1.Lines.Clear;
        ar := ReturnArray();
        for i:=0 to 9 do Memo1.Lines.Add(inttostr(ar[i]));
        SetLength(ar,0); //혹은 Finalize(ar);
        ar := Nil;
    end;

    end.
    <!--CodeE-->

    테스트하니 잘되는군요..
    그냥 덩그러니.. form 하나에 TButton, Tmemo 각각 1개 만들고..
    하니..
    잘되네요..

    syntax의 활용은 많죠..
    type은 object에 대한 모든 type을 재지정하는 것입니다..
    따라서, 모든 정해진 object에 처리가능합니다.
    function, procedure,object(컴포넌트들..Tform같은거죠..)

    답이되셨길 바랍니다.