델파이 Parameter
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 을 대입해 주어야 한다.
'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 |
댓글