Q&A

  • 변수 선언 에 관해
1. 프로시저명에 변수를 선언
procedure 프로시저명 ( var msg : Tmessage);
begin
~~~
end;

2. 프로시저 begin 사이에 변수를 선언
procedure 프로시저명(sender : Tobject)
var msg;
begin
~~~
end;

이런식으로 선언하는 두가지의 차이는 뭔지 궁금한데요?

3  COMMENTS
  • Profile
    배경 2002.04.13 22:57
    저가 알기 로는 1값은 함수와 같이 변수값을 리턴하거나
    클래스에서 정의된 변수만 을 사용가능한것으로 알고있고

    아래 2 는 프로시져안에서만 사용하는  일반적인 지역변수입니다.
  • Profile
    김용덕 2002.04.12 21:17


    안녕하세여.
    먼저 procedure 프로시저명(var msg : TMessage);
    이것은 함수의 argument로 앞에 var이 붙은 것은 Call by referance를 의미합니다.
    일반적으로 procedure 프로시저명(msg : TMessage);로 선언하게 되면,
    procedure 프로시저명 내에서 msg에 어떤 변화가 일어나도 이함수로 돌아가면 msg는 호출하기전 상태 그대로로 되고요(Call By Value),
    procedure 프로시저명(var msg: TMessage); 로 선언하게 되면,
    procedure 내에서 msg의 어떤 변화가 있게 되면, 이 함수(?)를 호출한 곳의 값도 변화하게 되죠(Call by Reference)

    그리고, procedure 프로시저명(Sender: TObject);
    var
      Msg : TMessage;
    이런 식으로 선언한 것은 이 함수에서 Msg라는 변수를 쓰겠다는 뜻이고요.

    도움이 될 지 모르겠습니다.
    그럼 이만...
  • Profile
    느믈이 2002.04.12 21:54

    다시질문염~~지성.
    구럼..
    procedure 프로시저명(var msg : TMessage);로 선언하는걸 잘 이해를
    못하겠거덩염??
    여의 msg넌 변수가 되는건가염?  이변수는 전역변수로 private에
    선언얼 해주는걸 쓰는건가염?? 그리공 이 함수를 호출한 곳의 값도 변화된다고
    하셨는뎅 구럼 전역변수의 값이 완전이 바뀌게 되는 건가염??

    구리공 한가지 더 질물염..지성.
    editbox나 spinedit의 value 값들은 프로그램상에서 한번 정해지면
    프로그램이 끝나면 원래의 상태 값으로 돌아가 잖아염..
    구럼 이런식으로 변수 선언얼 해주면  계속 값들을 밖아 줄수 있는간가염??
    ㅠㅠ...  답변점.부탁드립니당...지성..