본문 바로가기
Delphi/프로시저-함수

델파이 프로시저와 함수

by MonoSoft 2021. 7. 19.
728x90
반응형

델파이 프로시저와 함수

 

https://youtu.be/gIbjirw-UUQ

 

 

독립적인 문장(프로그램 코드) 블록, 코드를 독립(분리)하고 재사용 가능

 

프로시저

procedure 프로시저이름(매개변수 목록);

{ 선언부 : 구현부에서 사용할 변수,상수,타입 지정 }

begin

{ 구현부 }

end;

 

porcedure TForm1.WriteLog(AValue: string);

var

S: string;

begin

S := FormatDateTime('HH:NN:SS', Now) + ' ' + AValue;

Memo1.Lines.Add(S);

end;

 

begin...end 사이의 구현부 실행, 매개변수로 받은 데이터 사용 가능

구현부에서 사용할 변수(var), 상수(const), 타입(type) 선언부에 선언

 

다른 문장에서 프로시저 호출. 프로시저 이름과 매개변수로

전달할 데이터(매개변수와 같은 자료형) 사용

 

함수

function 함수이름(매개변수 목록): 반환값타입;

{ 선언부 }

begin

{ 구현부 }

Result := 반환값;

end;

 

function Add(ANum1, ANum2: Integer): Integer;

var

Sum: Integer;

begin

Sum := ANum1 + ANum2;

Result := Sum; // Add := Sum; 함수이름 변수 사용가능

// Exit(Sum); // Exit 함수 사용시 문장을 빠져나감

end;

 

var

Num: Integer;

begin

Num := Add(10, 20);

ShowMessage('10과 20을 더한 값 = ' + IntToStr(Num));

end;

 

 

구현부 문장 실행 후 Result 변수에 반환값 할당

(함수이름 변수 사용 가능)

Result 대입 코드 후 다음 줄의 문장 실행 됨

(빠져나가지 않음), Exit(반환값); 함수 사용 시 함수 빠져나감

 

 

 

매개변수(Parameter)

함수와 프로시저는 0개 이상의 매개변수 목록을 가진다.

여러개의 매개변수 사용 시

세미콜론(;)으로 구분. 같은 자료형 사용 시 쉼표로 구분 가능

 

procedure Test;

procedure TestStr(AStr: string);

procedure TestStrInt(AStr: string; AInt: Integer);

procedure TestInts(AInt1, AInt2: Integer);

 

매개변수의 전달방식

값 매개변수(기본)

변수(var) 매개변수

상수(const) 매개변수

출력(out) 매개변수

값 매개변수와 변수 매개변수

값 매개변수는 값에 의해 전달. 변수 매개변수는 참조에 의해 전달

(값 매개변수와 변수 매개변수를 가장 많이 사용)

 

function DoubleByVal(X: Integer): Integer;

begin 

X := X * 2; 

Result := X; 

end;

 

function DoubleByRef(var X: Integer): Integer;

begin 

X := X * 2; 

Result := X; 

end;

var 

I, J, V, R: Integer; 

begin 

I := 4; 

J := 4; 

V := DoubleByVal(I); // V = 8, I = 4 

R := DoubleByRef(J); // R = 8, J = 8 

R := DoubleByRef(4); // 오류발생

end;

 

상수 매개변수

읽기 전용 값 매개변수. 값 매개변수와 비슷하지만,

컴파일러가 코드 최적화 가능

 

function DoubleByConst(const X: Integer): Integer;

begin

// X := X * 2; // 오류발생

Result := X * 2;

end;

 

출력 매개변수

변수 매개변수와 같은 참조에 의해 전달.

참조되는 변수의 초기 값은 전달 시 버려짐

 

procedure DoubleByOut(X: Integer; out Value: Integer);

begin

X := X * 2;

Value := X;

end;

 

 

타입 미지정 매개변수

var, const, out 매개변수를 선언 시 타입 지정 생략 가능

 

procedure DoSomthingVar(var Value);

procedure DoSomthingConst(const Value);

procedure DoSomthingOut(out Value);

 

함수 내에서 매개변수 형변환 후 사용

 

 

배열 매개변수

procedure DoSomethingDynArray(Value: array of Integer);

type TNumbers = array[1..4] of Integer;

procedure DoSomethingArrayType(Value: TNumbers);

 

 

가변형(Variant) 배열 매개변수

 

procedure DoSomething(Value: array of const);

 

array of const로 지정 시 타입이 다른 배열을 매개변수로 전달 가능

매개변수 기본값 지정

매개변수 선언 시 기본값 지정 가능, 맨 뒤의 매개변수 부터 연속적으로 기본값 지정 가능

 

procedure StrDef(AStr: string = '');

procedure StrsDef(AStr1: string = 'a'; AStr2: string = 'b');

procedure IntDef(ANum: Integer = 0);

procedure IntsDef(ANum1: Integer; ANum2: Integer = 0);

procedure IntsDef(ANum1, ANum2: Integer = 0); // 오류발생

begin

StrDef('안녕하세요.');

StrDef;

end;

 

같은 이름의 함수(overload)

overload 지시어 사용 사용 시 같은

이름의 함수, 프로시저 사용 가능.

단, 매개변수 자료형이 달라야 함.

 

procedure WriteValue(AString: string); overload;

procedure WriteValue(ANumber: Integer); overload;

procedure WriteValue(AArray: array of string); overload;

728x90
반응형

'Delphi > 프로시저-함수' 카테고리의 다른 글

델파이 RTF (Rich Text Format) 사용방법  (0) 2021.07.21
델파이 JSON to Object 한줄  (0) 2021.07.20
델파이 기본함수  (0) 2021.07.15
델파이 GetLastError() 함수  (0) 2021.07.14
델파이 문자열 관련 함수  (0) 2021.07.13

댓글