Q&A

  • or 연산자에 대한 질문입니다..
or 연산자에 대한 질문인데요..

이상하게 잘 안되는 부분이 있어서 질문드립니다..

아래를 봐주세요..

===========================================================

ValueA, ValueB, Result : Integer;
tmpChk1, tmpChk2 : Boolean;
..................

ValueA := StrToInt(edtValueA.Text);
ValueB := StrToInt(edtValueB.Text);

{ 방법 1
tmpChk1 := ValueA < ValueB;
tmpChk2 := ValueA mod ValueB > 0;

If tmpChk1 or tmpChk2 Then
begin
  ShowMessage('연산할 두 숫자를 재입력해주세요!');
end;
}

{ 방법 2
tmpChk1 := ValueA < ValueB or ValueA mod ValueB > 0;

If tmpChk1 Then
begin
  ShowMessage('연산할 두 숫자를 재입력해주세요!');
end;
}
=============================================================

위와 같이 두가지 방법으로 같은 결과를 낼수 있는 예제를 만들었는데요..

방법1로 코딩을 하고서 실행을 해보면 잘 되는데요..

방법2로 코딩을 하고서 실행을 해보면

tmpChk1 := ValueA < ValueB or ValueA mod ValueB > 0; 부분에

imcompatible types 에러가 납니다..

방법1을 방법2의 식으로 간단히 줄인다고 하고서 했는데 왜 에러가 나는지

도저히 이해가 안갑니다..

제 생각으로는 0이 잘못되었다고 생각하는데요.. 만약 위의 방법2 대로라면

tmpChk1의 불린 연산을 할때 0을 어떤식으로 해줘야 하는지요?
2  COMMENTS
  • Profile
    최용일 2003.06.22 01:11
    안녕하세요. 최용일입니다.

    아마도 ValueA < ValueB 하고 ValueA mod ValueB > 0를 or 연산하실려는 것 같은데...

    님의 아래의 코딩을 괄호를 써서 해보면

    tmpChk1 := ValueA < ValueB or ValueA mod ValueB > 0;

    아래와 같이 됩니다.

    tmpChk1 := ValueA < ( ValueB or ( ValueA mod ValueB ) ) > 0;

    이런식이죠... tmpChk1 := A < B > C;

    당연히 델파이는 이런 식의 계산은 할 수가 없습니다. 사람도 마찬가지지만...

    첫번째 방법으로 하면 tmpChk1 := A or B; 이런식으로 제대로 계산할 수 있지만...

    연산자에는 우선순위란게 있습니다. 이 우선순위에 따라서 먼저 계산할것과 나중에 계산할것이 정해지는 거죠... 덧셈보다 곱셈을 더 먼저 계산해야한다는...

    이렇게 많은 연산자를 쓰실때는 되도록 괄호로 묶으시는게 좋습니다. 확실한 것이라도...

    tmpChk1 := ((ValueA < ValueB) or ((ValueA mod ValueB) > 0));

    연산자 우선 순위는 아래를 참고하세요...

    Precedence of operators
    Operators        Precedence
    @, not        first (highest)
    *, /, div, mod, and, shl, shr, as        second
    +, -, or, xor        third
    =, <>, <, >, <=, >=, in, is        fourth (lowest)

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

  • Profile
    이진성 2003.06.22 01:21
    최용일님.. 좋은하루되세요..

    감사합니다.. ^^
    • 아폴론
    • 2003.06.23 20:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바보감자
      2003.06.23 21:19
      안녕하세요 언제나 초보 바보감자입니다.. 채크 박스 올려놓고 이걸 테스트 해보시면..될듯 싶어요.. TCh...
    • 박찬희
    • 2003.06.23 20:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박서규
      2003.06.23 22:51
      가장 쉬운방법은 메시지를 보낼때 내부적으로 아이디나 특정 유니크한 값을 보내서 그 쓰데드를 구분하시고...
    • 박찬희
      2003.06.23 23:32
    • KDDG_ZZOM
      2003.06.23 20:34
      쿼리문에서 오류가 있는것같네요... 오픈하기전에 query.sql.text등으로 완성된 쿼리를 구해서 직접실행...
    • 바보감자
      2003.06.23 20:32
      안녕하세요 언제나 초보 바보감자입니다. SQL 문이 잘못된듯싶습니다. 한번 SQL문을 올려보심이..좋을듯 ...
    • 정현석
    • 2003.06.23 19:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 나그네
      2003.06.24 00:30
      bindcltqr70.bpl 을 component->install package에서 추가 하세요..
    • 몽중인
    • 2003.06.23 18:14
    • 3 COMMENTS
    • /
    • 0 LIKES
    • KDDG_BaSTaD
      2003.06.23 23:19
      ==> 안녕하세요 전병호입니다. (_ _) 저도 TIdFTPServer를 이용해서 옆튀퓌써버를 맹길어 보긴했는데...
    • 몽중인
      2003.06.23 23:42
      답변 감사합니다. 오늘 집에 가시면 자료 좀 올려주시면 감사하겠습니다. 제가 스킬이 높지 못해서 (^^...
    • KDDG_BaSTaD
      2003.06.24 11:35
      ==> 잠자려고하니 문득 생각나서 올립니다. ^^;; 데모한번 만들어볼라다만.. TIdFTPServer 예제입니다...
    • 김정은
    • 2003.06.22 07:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이광철
      2003.07.05 06:17
      procedure TForm1.Button1Click(Sender: TObject); var    F: TextFile; begin ...
    • 남기섭
    • 2003.06.22 06:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바보감자
      2003.06.23 21:49
      안녕하세요 언제나 초보 바보감자입니다.. 쿼리나 테이블은 자기가 연결된 녀석들의 정보를 가지고 있는겁...
    • 송정철
    • 2003.06.22 04:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바보감자
      2003.06.23 20:29
      안녕하세요 언제나 초보 바보감자입니다.. 폼을 캡쳐하신후에. 퀵리포트에 이미지 콤포 하나 올려서 영역 ...
    • 이용주
    • 2003.06.22 02:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신연근
      2003.06.23 19:08
      Form의 이벤트에 보면 OnClick 에 해당하는 이미지 생성하면 되지 않을까여? 그럼..즐프..
    • 이병언
    • 2003.06.22 01:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바보감자
      2003.06.23 21:13
      안능하세요 언제나 초보 바보감자입니다. SetWindowPos( wnd, 0, 0, 0, clientwidth, clientheight, &nbs...
    • 이진성
    • 2003.06.22 00:11
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.06.22 01:11
      안녕하세요. 최용일입니다. 아마도 ValueA < ValueB 하고 ValueA mod ValueB > 0를 or 연산하실려...
    • 이진성
      2003.06.22 01:21
      최용일님.. 좋은하루되세요.. 감사합니다.. ^^
    • 손광현
      2003.06.24 22:03
      KeyDown 이벤트에 코딩하세요.. //Alt + F4 무시 procedure TForm1.FormKeyDown(Sender: TObject; var ...
    • 장재영
    • 2003.06.21 20:41
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 하리수
    • 2003.06.21 18:06
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 수훈
    • 2003.06.21 08:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • ^ㅡ^
      2003.06.21 19:59
      초보가 한 말씀 드리겠습니다. 이미지를 저장하시려면  그래픽파입이 있을꺼구요 경로를 저장...
    • 수훈
      2003.06.22 00:11
      여기에서 봤던 방법인데요 확실히 애러 없이 돌아가는데 이미지가 저장 안되네요. 크.!~~ 필드 타입을...
    • ^ㅡ^
      2003.06.22 01:44
      //답변이 되었으면 하네요 초보가... //어차피 이미지위에 그림을 올릴실꺼니까 이렇게 하시면 될꺼 ...
    • ^ㅡ^
      2003.06.21 20:05
      그러시면 뒤쪽 내용을 안 보여 주시면 되지 않나요?? 필드를 빼시면 될꺼 같은데요.. 그러면 가로 스크롤...
    • 박상철
    • 2003.06.21 06:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.06.21 08:04
      안녕하세요. 최용일입니다. 이벤트로는 할 수 없구요... 윈도우메세지를 이용하시면 됩니다... 크기...
    • 서영택
    • 2003.06.21 03:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김경록
      2003.06.22 00:29
      Thread의 내용중에 Excute에 직접 Coding은 되도록 자제하시구여 특정 Procedure나 Function을 작성하시...
    • 서영택
      2003.06.28 01:04
      내용무
    • 박상기
      2003.06.21 04:33
      VRFY가 안되는 것은 그쪽 서버에서 그렇게 해 놓았기 때문입니다. Rcpt to를 먹여서 넘어오는 내용을 참고...
    • 유창원
      2003.06.21 04:41
      정녕 서버에서 설정을 한다는 말씀이십니까? 그럼 VRFY는 사용을 할 수가 없겠네요? RCPT 커맨드로...
    • 박상기
      2003.06.21 23:50
      네..그렇습니다. RCPT TO로 확인하셔야 합니다.