Q&A

  • [질문] record 유형에 기본값이 들어가지 않게 하려면 ...
Record 유형을 만들어 그걸 선언하여 인자로 전달해 쓰려고 하니
기본 값이 들어가 있는데 항상 모든 record 안의 각 항목을 초기화 작업을 해줘야 하나요 ?

TMyrecord = packed record
   Text : string;
   Number : integer;
end;

이런 경우, Text 나 Number 에 값이 들어가 있는데 어떻게 이걸 한번에 완전히 기본 값만 지정되게 할 수는 없나요 ?

var
vMyrecord : TMyrecord
begin
...
end;
위의 경우 어떻게 한번에 초기값이 엉뚱한 값이 들어가지 않게 할수는 없을까요 ?
4  COMMENTS
  • Profile
    석주현 2008.10.25 19:14
    그냥

    FillChar 함수로 메모리에 0 값으로 초기화 해주면 될것같네요.

    <!--CodeS-->

    FillChar(vMyrecord,SizeOf(TMyrecord),0);

    <!--CodeE-->

    다른 방법으론 아예 레코드를 클레스로 만들고 생성자와 소멸자를 만들어 쓰시는 것도 좋은 방법일 듯 합니다. ^^
  • Profile
    이은주 2008.10.26 15:04
    아 감사합니다...
    그렇게 할 수 있군요.
    전에도 얼핏 레코드에 생성자 소멸자를 쓴다는 것을 들어 봤는데
    소멸자를 써둔다고 해도 명시적으로 소멸 과정을 거치게 해줘야 하지 않을까요 ?

    그리고 궁금하던것은 만일 인자로 그냥 아래 처럼.. 쓰게 되면 해제 과정을 하지 않아도 이상없는 걸까요 ?

    var
    vMyrecord : TMyrecord;
    beign
    vMyrecord.Text L= '야 !';
    vMyrecord.Number := 30;
    어떤 함수나 프로시저(vMyrecord);
    end;
  • Profile
    이정욱 2008.10.27 08:00
    네 해제과정 필요 없습니다.
  • Profile
    이은주 2008.10.28 07:25
    아 그렇군요... 포인트 형태로 사용하는 경우만 메모리 해제를 하면 되는거군요.
    감사합니다.