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
[67846] Re:Re:Re:Re:Re:Re:[질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요
얌냠 [akein] 1392 읽음    2012-07-30 19:14
아이구;; 제가 마음이 급해서 그랬나봐요;; 다시 해보니 제대로 돌아가네요.
도움주셔서 정말 감사합니다.

Starlet 님이 쓰신 글 :
: 스크린샷으로 볼 때 파란 라인이 있는 c2 = wc & 0x00FF가 아직 실행되지 않았습니다. 이제 이 라인을 수행하겠다는 대기 상태인 것 같은데요...
: 그래서 c2에 아직 값이 들어가지 않은 것 같습니다.
: F8을 한번 더 누르시거나, c2 = wc & 0x00FF 아래에 ShowMessage(String().sprintf(L"%02X %02X", c1, c2)); 를 넣어서 확인해 보시면 제대로 처리되어 있을 것입니다.
:
: 얌냠 님이 쓰신 글 :
: : 우선 답변 달아주신데 대해서 정말로 감사드립니다.
: : 지금 알려주신대로 수정해서 돌려봤는데, UnicodeString인 A를 wc로 넘기는데는 아무문제가 없는데, wc를 c1과 c2로 나누는데서 값이 이상한 값으로 바뀌어 버리네요..우선 제가 수정한 코드와 결과를 스크린샷으로 찍었는데 한번 봐주시면 감사하겠습니다. 스크린샷에 코드와 결과부분을 빨간색으로 표시해두었습니다. 변수 부분을 보시면 wc는 L'\x02' 2U (0x0002)로 되어있고, 결과로 나온 c1과 c2는 '\0' 0 (0x00), '\xC0' -64 (0xC0)으로 나옵니다. 어디가 잘못된 걸까요?ㅠ.. 한번만 더 도움 부탁드리겠습니다.
: :
: : Starlet 님이 쓰신 글 :
: : : 아, 0x0102군요.
: : : 그렇다면 문자열이라기 보다 비트 단위(2진수) 연산을 해야 되는군요.
: : : 0x0102가 A라는 스트링의 한 글자입니다. AnsiString을 char 로 한글자씩 받을때 c_str()을 쓰듯이 똑같이 c_str()을 사용하면 됩니다.
: : : 단, 유니코드이기 때문에 char(8비트) 가 아니라 wchar_t(16비트) 입니다.
: : : 먼저 한글자를 받을 wchar_t wc; 라고 해서 하나 두고, 그리고 0x0102를 반씩 잘라 저장할 char c1, c2; 를 만듭니다.
: : : 그러면,
: : :
: : : wc = A.c_str()[0];  // 첫번째 0x0102입니다. 두번째 0203은 c_str()[1], 그 다음은 c_str()[2]...
: : : c1 = wc >> 8; // 오른쪽으로 8비트만큼 밀어 버립니다. 그러면 상위 8비트만 남게 됩니다.
: : : c2 = wc & 0x00FF // 상위 비트를 00으로 AND 연산하여 없애버려 하위 8비트만 남습니다.
: : :
: : : 이렇게 하면 c1에 0x01, c2에 0x02이 들어갑니다.
: : :
: : : 이걸 말씀하시는게 맞는지 모르겠네요...
: : :
: : :
: : : 얌냠 님이 쓰신 글 :
: : : : 아 죄송합니다  A = 0x0102, 0x0203, 0x0304 이고, B = 0x01, 0x02, 0x02, 0x03, 0x03, 0x04 로 만들고 싶습니다.
: : : :
: : : : Starlet 님이 쓰신 글 :
: : : : : 질문이 애매하네요.
: : : : : UnicodeString A = "0102, 0203, 0304"; 인가요?
: : : : : 아니면 0x0102, 0x0203, 0x0304 로 저장되어 있는 것인가요?
: : : : :
: : : : : 얌냠 님이 쓰신 글 :
: : : : : : 안녕하세요. Substring에 대해서 여쭤보려고 합니다.
: : : : : : 제가 UnicodeString으로 되어있는 데이터를 substring을 이용해서 AnsiString으로 변환하려고 합니다.
: : : : : : 예를들어 UnicodeString A = 0102, 0203, 0304와 같이 저장되어 있을때 각 열에 해당되는 4개의 숫자를 01, 02, 02, 03, 03, 04 와 같이 2개씩 잘라서 AnsiString으로 정의된 변수 B에 저장하고자 합니다.
: : : : : : 제가 생각했던 코딩은 이렇습니다.
: : : : : :
: : : : : : =================================
: : : : : :
: : : : : : UnicodeString A;
: : : : : :
: : : : : : AnsiString B;
: : : : : :
: : : : : : for (int i = 1; i < A.Length(); i++)
: : : : : :   {
: : : : : :    B[2*i-1] = A[i].SubString(1,2);
: : : : : :    B[2*i] = A[i].SubString(3,4);
: : : : : :   }
: : : : : : ==================================
: : : : : : 이대로 build를 하니
: : : : : : [BCC32 Error] Main.cpp(7208): E2294 Structure required on left side of . or .*
: : : : : : 이런 에러가 발생하는데 뭐가 문제인지 잘 모르겠습니다. 도움 부탁드립니다.

+ -

관련 글 리스트
67833 [질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요 얌냠 1166 2012/07/30
67834     Re:[질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요 Starlet 1267 2012/07/30
67835         Re:Re:[질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요 얌냠 1257 2012/07/30
67837             Re:Re:Re:[질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요 Starlet 1649 2012/07/30
67843                 Re:Re:Re:Re:[질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요 얌냠 1394 2012/07/30
67845                     Re:Re:Re:Re:Re:[질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요 Starlet 1215 2012/07/30
67846                         Re:Re:Re:Re:Re:Re:[질문]substring 이용해서 unicodestring 자르는 방법 좀 알려주세요 얌냠 1392 2012/07/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.