Q&A

  • bool에 관한 질문입니다.
안녕하세요?
다른 사람이 짠 프로그램을 보다가 문득 궁금한점이 생겨서 이렇게 글 남깁니다.

private에
a : bool
요렇게 a라는 변수의 변수타입이 정의 되어있습니다.

그런데.. TForm.FormActivate되면서.. if문이 한줄 들어가있는데요..
if not a then BtnTest.Click <-요겁니다..

제가 궁금한건..
위에서 a := 0; 요렇게 선언을 해줘야 저 구문이 제대로 먹힐거 같은데요..
별다른 선언이 없어두 동작을 잘 하네요..

bool라는 글자위에 마우스를 올리면..
type Windows.BOOL:LongBool이라고 나옵니다..

오브젝트 파스칼에 의하면 LongBool은 0(False) 또는 0이 아닌값(True)을 갖는 다구 되어있는데요..
그렇담.. 정확히 0을 선언한게 아니기 때문에 a값은 True가 되어야 하는게 아닌가요?
a가 True값을 가지면 BtnTest.Click문이 작동을 안할텐데..

그래서 프로그램에서 실제로 어떻게 돌아가는지 확인해 보고자
if문 앞에 showMessage(BoolToStr(a))를 해보면.. 0이 나옵니다..

bool, boolean으로 검색해봐도.. 명쾌한 답을 얻을수 없었기에 이렇게 질문을 던집니다.
고수 여러분 도와주세요~
4  COMMENTS
  • Profile
    최용일 2005.02.04 03:20
    안녕하세요. 최용일입니다.

    객체를 생성하면 모든 값들은 0으로 초기화 됩니다. 때문에 특별히 초기화를 안해주셔도 0이 들어가 있습니다.

    ^^ 항상 즐코하세요...

  • Profile
    아폴론 2005.02.04 18:19


    procedure TForm1.BitBtn1Click(Sender: TObject);
    var u : integer;
           i : double;
    begin
      Edit1.Text := inttostr(u);
      Edit2.Text := Floattostr(u);
    end;

    이럴때 두개의 Edit값은  1242528 이란 값이 들어가 있습니다.

    저건 왜 그런가요?
  • Profile
    이중철 2005.02.04 19:11
    최용일씨 말씀이 맞습니다.
    객체는 생성시 멤버변수들이 있는 메모리 영역을 0으로 초기화 하고 생성됩니다.
    님 께서 말씀 하신 함수내의 변수들은 메모리를 영역만 잡아놓고 0으로 초기화
    하지 않습니다.
    그러나 델파이가 객체를 생성시 멤버변수가 0으로 초기화한다고 다른 언어도 그렇다고
    생각하시지는 말아주세요
    즉, 델파이도 객체를 생성할때 생성자(Constructor)에 멤버변수를 초기화 하는 버릇은
    좋은 습관입니다.

    추가적으로 최용일씨 객체의 멤버변수 영역이 Heap인가요 Stack인가요
    갑자기 궁금하네요 함수내의 변수야 Stack이지만..

    결국, 모든변수는 초기화를 해야한다. 이런 원칙은 지켜주는 것이 좋습니다.
  • Profile
    김영석 2005.02.04 18:09
    그래서 그랬던거군요..
    델파이 초보라 아직 배울게 많네요..^^

    감사합니다..
    즐코하세요~


    • 김영창
    • 2005.02.04 02:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김영석
    • 2005.02.04 02:21
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.02.04 03:20
      안녕하세요. 최용일입니다. 객체를 생성하면 모든 값들은 0으로 초기화 됩니다. 때문에 특별히 초기화를...
    • 아폴론
      2005.02.04 18:19
      procedure TForm1.BitBtn1Click(Sender: TObject); var u : integer;      ...
    • 이중철
      2005.02.04 19:11
      최용일씨 말씀이 맞습니다. 객체는 생성시 멤버변수들이 있는 메모리 영역을 0으로 초기화 하고 생성됩니...
    • 김영석
      2005.02.04 18:09
      그래서 그랬던거군요.. 델파이 초보라 아직 배울게 많네요..^^ 감사합니다.. 즐코하세요~
    • 김시아
    • 2005.02.04 01:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오익환
      2005.02.04 19:19
      [Fatal Error] Project1.dpr(6): File not found: 'ExceptionLog.dcu' ExceptionLog.dcu는 ObjectPrinter...
    • 주재환
    • 2005.02.04 00:36
    • 0 COMMENTS
    • /
    • 0 LIKES
    • kivalan
    • 2005.02.03 20:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2005.02.18 00:55
      UDP 라는 프로토콜은 기본적으로... 데이터의 완벽한 전송을 .. 보장 하지않습니다. 다시말하자면... 손...
    • 락락여인
      2005.02.04 01:57
      출력이 끝난후에 AdvStringGrid1.autosize := true; 를 사용사시면 자동으로  맞춰 줍니다....
    • 오익환
      2005.02.03 18:49
      접근을 잘 못하고 계신것 같습니다. length(Cells[x,y])를 하면 Cells[x,y]의 문자길이가 Return됩니다....
    • BINU
    • 2005.02.03 10:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 덜렁이
    • 2005.02.03 08:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박지용
      2005.02.23 20:38
      음.  Packet처리는 변화가 없을꺼고. 다만 Com Port 에서 Socket 핸들링하는 부분만 처...
    • 쁜지아빠
      2005.02.04 19:12
      안녕하세요 쁜지 아빠입니다. 제 짧은 이해력으로 보건데 2개의 프로그램이 떠 있는 상태에서 상호간에(...
    • 이중철
      2005.02.03 21:53
      목적하시는 바가 소스의 큰 수정없이 단지 프로그램2가 실행된 후 끝나는 시점을 알고자 하는것으로 보입니...
    • 구창민
      2005.02.03 21:29
      안녕하세요.. 말씀하시는 리턴코드가 어떤 것을 말씀하시는지 잘 모르겟지만, 어플리케이션간 통신이...
    • 우소
    • 2005.02.03 04:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2005.02.03 21:32
      안녕하세요.. 일전에 제다이(http://www.delphi-jedi.org/) 에서 관련된 내용을 본적이 있습니다. MAPI ...
    • 박노팔
      2007.04.11 09:47
      { Outlook E-Mail Sender! -- by Jimmy Tharpe         &nb...
    • whatlee
    • 2005.02.03 03:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.02.03 20:19
      varOlestr와 VarVarient의차이.....를 말하기전에.. 먼저 이 답변은 저의 짧은 지식으로 쓰는것이니 절...
    • 전영구
    • 2005.02.03 01:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.02.03 20:00
      안녕하세요. 최용일입니다. 아마도 GSM 6.10코덱인거 같은데... CbSize가 2인것에서 알 수 있듯이 뒤...
    • kivalan
      2005.02.03 20:11
      그럼 말씀하신대로 자료 타입 만 맞추어 주면 WaveInOpen할때 에러가 없어진다는 말씀이시겠네요. 뒤에 2...
    • 최용일
      2005.02.03 21:00
      안녕하세요. 최용일입니다. 뒤에 2바이트정보를 더 써주시면 오픈할때 에러는 안날거구요... 그러니...
    • 박연준
    • 2005.02.02 22:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이진수
      2005.02.02 22:58
      다음까페 게시판에 있는 html 컨트롤은 IE 설치시 같이 설치되는(물론 거의 대부분의  Windows ...
    • 박연준
      2005.02.02 23:06
      DHTML Edit Control 컨트롤을 사용하려면 어떻게 해야 하는거죠..? 잘되있고 정말 좋던데...
    • 이진수
      2005.02.03 03:14
      Delphi를 사용하신다면 Component 메뉴의 ActiveX Import 를 실행하면, 설치된 ActiveX의 리스트를 확인할 ...
    • ziniii
    • 2005.02.02 22:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2005.02.02 22:27
      http://www.torry.net/quicksearchd.php?String=EBCDIC&Title=Yes 여기에 있는듯 하네요 소스까지 오픈...
    • ziniii
      2005.02.03 00:42
      음...덕분에 많은 도움이... 감사합니다...
    • 정근호
    • 2005.02.02 22:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 채팅
      2005.02.02 23:01
      클라이언트쪽에서 설정하는 것을 말하는 것이라면 IE나 FireFox에서 그런 옵션이 있는 지 모르겠네요.. ...
    • 송인화
    • 2005.02.02 21:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2005.02.02 22:17
        Form1.Caption := 'Connect  ' + AThread.Connection.Socket.Binding.PeerIP + '&nb...
    • 손희관
    • 2005.02.02 20:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2005.02.18 00:47
      버퍼링은. 어쩔수 없는 부분입니다. 아무리 버퍼링을 한다구하더라도 실시간 형식을 원하시면 버퍼링 속...