델파이의 procedure와 function

값을 반환하는 서브루틴을 펑션(Function)이라하며 값을 반환하지않는 서브루틴을 프로시져(Procedure)라고 부른다.

procedure는 C에서 void형의 함수에 해당한다.

■ 프로시져 procedure

  ▶ 구조

procedure <프로시져 이름>(<인수>);
label;
    <라벨>
const
    <상수 선언>
type
    <형 선언>
var
    <변수 선언>

<프로시져 및 펑션 선언>

begin
    <프로시져 본문>
end;


프로시져 본체이외의 label, const, type, var 및 프로시져, 함수의 선언은 필요없는 경우 생략할 수 있다.
프로시져 안에 선언된 프로시져 또는 함수는 그 프로시져 안에서만 사용할 수 있다.
인수가 여러개 있는 경우는 세미콜론으로 구분한다.

  ▶ 사용예

procedure TestProc(nA:Integer; dB:double);
label 10;
const
  NoMax = 256;
type
  TTestRcd = record
    nIdNo: Integer;
    steId: String;
    nVal: integer;
  end;
var
  arrItem: Array[0..NoMax] of Byte;
  TempRcd: TTestRcd;

function InFunc(dB:double):double;
var
  dC:double;
begin
  //...
end;

begin
  //...
  //...

end;

■ 펑션 function

  ▶ 구조

function <프로시져 이름>(<인수>):<반환값의 데이터형>;
label;
    <라벨>
const
    <상수 선언>
type
    <형 선언>
var
    <변수 선언>

<프로시져 및 펑션 선언>

begin
    <프로시져 본문>
    <프로시져 이름>:=<반환값>;
end;


  ▶ 사용예

함수값은 Result에 결과를 대입한다.
함수명에 반환값을 대입해도 된다.

function Testfunc(nA:Integer; dB:double):integer;
label 10;
const
  NoMax = 256;
type
  TTestRcd = record
    nIdNo: Integer;
    steId: String;
    nVal: integer;
  end;
var
  arrItem: Array[0..NoMax] of Byte;
  TempRcd: TTestRcd;

function InFunc(dB:double):double;
var
  dC:double;
begin
  //...
end;

begin
  //...
  //...
  Result := nA * 2;
end;

+ Recent posts