프로그래밍 노트

[델파이] 함수에서 동적 배열과 정적 배열을 파라미터로 넘기는 방법 본문

델파이

[델파이] 함수에서 동적 배열과 정적 배열을 파라미터로 넘기는 방법

띠리 2008. 10. 6. 17:15

함수에서 동적 배열과 정적 배열을 파라미터로 넘기는 방법


unit uMain;

interface

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

type
  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }

    // 정적 배열형 선언
    type
      TArrVal = array[0..9] of Integer;
    function StaticSum(ArrVal: TArrVal): Integer;
    // 동적 배열형 선언
    type
      TDynArrVal = array of Integer;
    function DynamicSum(DynArr: TDynArrVal): Integer;

  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.Button1Click(Sender: TObject);
var
  ArrTestVal : TArrVal;
  i : integer;
begin
  for i := 1 to 10 do
    ArrTestVal[i - 1] := i;

  // 정적 배열 파라미터 함수 호출
  Button1.Caption := IntToStr(StaticSum(ArrTestVal));
end;

// 정적 배열 파라미터 함수
function TForm2.StaticSum(ArrVal: TArrVal): Integer;
var
  i : integer;
  iSum : integer;
begin
  iSum := 0;

  for i := Low(ArrVal) to High(ArrVal) do
    iSum := iSum + ArrVal[i];

  Result := iSum;
end;

procedure TForm2.Button2Click(Sender: TObject);
var
  DynArrTest : TDynArrVal;
  i : integer;
begin
  // 동적 배열 크기설정
  SetLength(DynArrTest, 10);

  for i := Low(DynArrTest) to High(DynArrTest) do
    DynArrTest[i] := i + 1;

  // 동적 배열 파라미터 함수 호출
  Button2.Caption := IntToStr(DynamicSum(DynArrTest));
end;

// 동적 배열 파라미터 변수
function TForm2.DynamicSum(DynArr: TDynArrVal): Integer;
var
  i : integer;
  iSum : integer;
begin
  iSum := 0;

  for i := Low(DynArr) to High(DynArr) do
    iSum := iSum + DynArr[i];

  Result := iSum;
end;

end.


 위 예제를 보면 특별히 설명이 필요없을 것같다.

Comments