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
[28659] AnsiString을 char로 변경할 때의 문제에 대한 질문
즐겁게~ [sangsookk] 930 읽음    2004-01-30 09:43
아래의 프로그램은 2개의 리치에디터중
EditIn의 Lines의 값을 EditOut Lines에 코드값으로 표시하는 프로그램입니다.

예를 들면 아래와 같구요...
EditIn          EditOut
가나다라마바    {0x??,0x??,0x?? ....,0x00),
123456          {0x31,0x32,0x33 ....,0x00},

그런데, 방법1을 사용하면 코드값이 이상하고,
방법2를 사용하면 정상적으로 실행됩니다.
제가 생각할 때는 방법1을 사용해도 문제가 없어야 할 것 같은데...
아무리 고민해도 왜 문제가 되는지 모르겠습니다.
한 수 가르침 부탁드리겠습니다.
오늘도 즐거운 하루되세요~


void __fastcall ThreadChange::Execute()
{
    //---- Place thread code here ----
    int line,i,j,len;
    unsigned char *ch;
    AnsiString target,etarget,str;

    FormMain->EditOut->Clear();
    line = FormMain->EditIn->Lines->Count;
    for(i=0 ; i<line ; i++)
    {
        /* 방법1
        ch = FormMain->EditIn->Lines->Strings[i].c_str();
        len = FormMain->EditIn->Lines->Strings[i].Length();
        */

        // 방법2 ->
        str = FormMain->EditIn->Lines->Strings[i];
        ch = str.c_str();
        len = str.Length();
        // <- 방법2

        etarget = "{";
        for(j=0; j<len; j++)
        {
            target = "0x" + target.sprintf("%02X",*ch++) + ",";
            etarget = etarget + target;
        }
        etarget = etarget + "0x00}, //" + IntToStr(i) + "\r\n";
        FormMain->EditOut->Lines->Strings[i] = etarget;
        FormMain->EditOutForcus();
    }
    FormMain->EditOutForcus();
}

+ -

관련 글 리스트
28659 AnsiString을 char로 변경할 때의 문제에 대한 질문 즐겁게~ 930 2004/01/30
34400     Re:AnsiString을 char로 변경할 때의 문제에 대한 질문 즐겁게~ 847 2004/01/30
34399     Re:AnsiString을 char로 변경할 때의 문제에 대한 질문 김태선 909 2004/01/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.