C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[57893] Re:Re:Re:Re: 문제는 해결 됐지만 --> 추가적인 질문이 생겼습니다.
아~자~~! [minonnet] 2370 읽음    2009-08-01 15:16
와~우~~ ^^;;
정말 고맙습니다.

locke님의 친절한 답변 정말 고맙습니다.
더욱 열심히 분발 할께요..^^;;
고맙습니다...

-------------------------
모두 즐거운 하루 되세요.
아~자~~!



locke 님이 쓰신 글 :
: 이건 class의 이항연산(a+b혹은 a-b, 기타등등)과 관련이 있는데요..
:
: 제가 쓴 예제는 모두 SendStr += <값>; 입니다. AnsiString도 c++빌더가 정의한 클래스입니다.
:
: 클래스의 연산자를 정의해놓고 거기에 맞는 타입의 연산이 있으면 처리를 합니다. 당연히 AnsiString + <char>,
:
: AnsiString + <문자열(null-terminated string)>, 등등..지원이 됩니다.
:
: 근데 님께서 쓰신 소스는요..
:
: : ⓑ번:   SendStr = "\x02" + (char)Len + Strn + (char)ETX;;
:
: rvalue를 처리하여 처리가 끝난 이후 lvalue에 넣는 식입니다.
:
: (제꺼는 AnsiString += <값>, 풀어쓰면 AnsiString = AnsiString + <값>이 됩니다.)
:
: SendStr(=AnsiString) 클래스 객체가 받는건 맨 마지막 대입할때 결과산출물(X)이겠죠.
:
:  "\x02" + (char)Len <-요론곤 AnsiString으로 해결이 되지않구요.
:
: rvalue중에 연산자 우선순위에 의하여 왼쪽부터 오른쪽으로 처리가 되겠지만
:
: 님의 식을 연산자 단위로 쪼개서 각각 계산하여 AnsiString에 대입해보시면
:
: 빌더 컴파일러가 어떻게 자료를 처리하는지..확인이 가능할 것 같습니다.
:
: 1=0000003D
: 2=00000041
: 3=00000042
: 4=00000003
:
: (같은 블럭에 다른 AnsiString을 선언하고 똑같이 처리하면 또 다른 값이 나옵니다. 끝에 41,42,03은 똑같구요.)
:
: 이건 님 식의 결과인데요. null-terminated string "\x02"를 해석해보니
:
: 컴파일러가 char + char로 인식한거 같지는 않구요. 모든 ""(null-terminated string)은 그거 자체가
:
: 스스로의 포인터기 때문에 문자열 "\x02"의 주소값과 뒤의 (char)Len을 합쳐서
:
: 0x3d가 된 듯 합니다.
:
: 자세한건 더 연구를 해보세염..
:
: -locke
:
: 아~자~~! 님이 쓰신 글 :
: : 안낭하세요. locke님! ^^
: : 김진호님과 locke님의 의견을 종합하여 문제는 해결되었는데요...
: : 궁금한 점이 하나 생겼습니다.
: :
: : ⓐ번:   SendStr = "\x02";
: :            SendStr += (char)Len; //1
: :            SendStr += Str;
: :            SendStr += (char)ETX; //2
: :
: : ⓑ번:   SendStr = "\x02" + (char)Len + Strn + (char)ETX;;
: :
: : 위의 ⓐ번과 ⓑ번의 결과값은 다르던데요..
: : 혹시 ⓐ번은 각 line을 수행할때마다 뒤에 NULL이 붙고
: : ⓑ번은 중간에 NULL이 붙지 않아서 인가요?
: :
: : 만약 그렇다면 ⓑ번의 중간에 NULL값들을 어떻게 추가 할 수 있을까요?
: : String((char)Len) 과 같은 방법 뿐일까요?
: :
: : ----------------------------------
: : 모두 즐거운 하루 되세요.
: : 아~자~~!
: :
: :
: :
: :
: :
: : locke 님이 쓰신 글 :
: : : 아래처럼 하세요.
: : :
: : : #define      ETX     0x03
: : :
: : :  AnsiString    SendStr, Str;
: : :  BYTE     Len=2;
: : :
: : :  Str = "AB";
: : :  SendStr = "\x02";
: : :  SendStr += (char)Len; //1
: : :  SendStr += Str;
: : :  SendStr += (char)ETX; //2
: : :
: : : 확인방법은 Memo1 하나 올려놓고
: : :
: : : for(int i = 1; i <= SendStr.Length(); i++) Memo1->Lines->Add(IntToStr(i) + "=" + IntToHex(SendStr[i], 8));
: : :
: : : 원하시는대로 들어갔는지 확인해보세요. 아래는 그 리턴값입니다.
: : :
: : : 1=00000002
: : : 2=00000002 <-길이
: : : 3=00000041
: : : 4=00000042
: : : 5=00000003 <-ETX
: : :
: : : -locke
: : :
: : : 아~자~~! 님이 쓰신 글 :
: : : : ///*******************************************///
: : : : #define      ETX     0x03
: : : :
: : : : AnsiString    SendStr, Str;
: : : : BYTE     Len=2;
: : : :
: : : : Str = "AB";
: : : : SendStr = "\x02" + ①번 + Str + ②번;
: : : : ///*******************************************///
: : : : 
: : : : 위와 같은 소스가 있다고 가정할때,
: : : : SendStr의 Data 값이 다음과 같이 되도록 하고 싶습니다.
: : : : [0] = 0x02
: : : : [1] = 0x02         //  Len  (①번)
: : : : [2] = 0x41         //  A
: : : : [3] = 0x42        //   B
: : : : [4] = 0x03        //   ETX  (②번)
: : : :
: : : : ①번 에는 Len 값을 넣고 싶고요.
: : : : ②번 에는 ETX 값을 넣고 싶은데요.
: : : : 어떻게 해야 하나요?
: : : : 많은 가르침 부탁합니다.
: : : :
: : : : -----------------------
: : : : 모두 즐거운 하루 되세요.
: : : : 아~자~~!

+ -

관련 글 리스트
57879 [질문] AnsiString에 정수 값을 어떻게 추가해야 하나요? 아~자~~! 1109 2009/08/01
57884     Re: 답변 주신 분들의 말씀으로 해결 했습니다. 고맙습니다. 아~자~~! 1197 2009/08/01
57881     Re:[질문] AnsiString에 정수 값을 어떻게 추가해야 하나요? locke 1224 2009/08/01
57885         Re:Re: 문제는 해결 됐지만 --> 추가적인 질문이 생겼습니다. 아~자~~! 971 2009/08/01
57886             Re:Re:Re: 문제는 해결 됐지만 --> 추가적인 질문이 생겼습니다. locke 835 2009/08/01
57893                 Re:Re:Re:Re: 문제는 해결 됐지만 --> 추가적인 질문이 생겼습니다. 아~자~~! 2370 2009/08/01
57880     Re:[질문] AnsiString에 정수 값을 어떻게 추가해야 하나요? 김진호.불사새 953 2009/08/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.