본문 바로가기
Delphi/문법

델파이 Parameter

by MonoSoft 2023. 9. 22.
728x90
반응형

델파이 Parameter

 

728x90

 

 

 

 

 

 

 

 

 

 

 

Parameter

 

일반적으로 함수나 메서드로 전달되는 값이라고 한다.

이것은 함수나 메서드가 실행될 때 필요한 정보를 전달하고

결과를 반환하는 데 사용되며, 파라미터는 함수나 메서드의 정의에 포함되며

해당 함수나 메서드를 호출할 때 전달해야 하는 값들을 명시적으로 지정한다.

 

파라미터는 함수나 메서드의 매개변수로도 알려져 있다.

 

function myfunc ( a : String ; const b : String; var c : TButton; out d : integer; ) : integer;

 

1) 'a' : 아무 선언없이 쓰인 경우로 'a'는 function 내에서 선언된 local 변수처럼 사용된다.

2) const 'b' : function 내에서 b는 상수로 사용된다.

3) var 'c' : 내부적으로 번지값을 전달한다. 당연히 상수값을 전달하면 error가 난다.

4) out 'd' : Delphi 3.0 이후에 생겼다. 변수가 값으로 입력하면

그 값이 function 내로는 전달되지 않으나, function에서 지정한 값이 반환되게 된다.

 

이제 실제 예를 보자

 

procedure main;

var

  i, j : integer;

begin

  j := myfunc('aaaaa', 'bbbbb', button1, i) ;

  // button1.caption => 'aaaaabbbbb'

  // i => 1234 가 된다.

end;

 

function myfunc( a : String ; const b : String; var c : TButton; out d : integer; ) : integer;

begin

  a := a + b ; // 가능

  // b := a + b ;

  // 'b' 는 상수이므로 error

  if c <> nil then c.caption := a;

  d := 1234;

  result := length(a);

end;

 

 

참고

 

1) 전달하는 parameter의 수는 3개 이하로 해야 빠르게 전달된다.

기본 전달방법은 Cpu의 레지스터를 이용하는데, 3개를 넘으면 Stack 메모리를 사용하게 된다.

 

2) Parameter 사용시 단순히 그 값을 참조만 할 것이라면, const로 선언하는하는 것이 좋다.

 

이유는,

첫째 - 값 전달을 위한 메모리 손실이 적어 빠르다.

둘째 - 전달값이 상수나 변수 모두 가능하다.

('var, out' 의 경우, 변수(번지값)만이 가능하다.)

 

3) 물론 local 변수를 선언하여 그값을 처리해야 할 때는

그냥 사용하는 (위의 'a') 것이 별도의 local 변수를 선언하지 않아도 되므로 효율적이다.

 

4) 위의 예처럼 'var'로 선언된 parameter의 경우에

그 값을 'nil'로 전달하면 delphi 3.0에서는 상수가 올 수 없다는 에러가 나나,

delphi 4.0에서는 잘 돌아간다.

 

따라서 delphi 3.0에서는 미리 같은 형의 변수를 선언해 주어 그 값에 nil 을 대입해 주어야 한다.

 

728x90
반응형

'Delphi > 문법' 카테고리의 다른 글

델파이 메소드 포인터(Method Pointer)  (0) 2023.10.24
델파이 동적 2차원 배열  (0) 2023.09.25
델파이 Application  (0) 2023.09.21
델파이 Self  (0) 2023.09.20
델파이 Owner 와 Parent  (0) 2023.09.13

댓글