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
[17102] Memo1->Text가 아니라 Memo1->Lines->Text로 해야합니다.
김백일 [cedar] 1215 읽음    2002-04-01 22:54
김경완 님이 쓰신 글 :
: 지난번에 올린 내용인데요....아직 해결이 나지 않아서 다시 올립니다.
: 이런 경우를 아시는 분 혹시 안계십니까....?
: 간곡히 부탁드립니다.
:
: Memo1 에 0x01, 0x02, 0x03 ...... 을 직접 타이핑하면 입력이 됩니다.
: 그런데 메모장등에서 복사 해서 붙여넣기를 하고 값을 확인하면
: 입력되어 있지 않습니다.
: 이런 경우를 아시는분 좀 가르쳐주세요..
:
:
: //------- 관련 소스 -------------------------------------------------------
:          char * iPos;
:          int result;
:          BYTE image[100];
:          String strTmp;
:         
:            strTmp = Memo1->Text.c_str();   //0x01, 0x02, 0x03, 0x04.....입력
:            while(exist_0x)
:            {
:                iPos=NULL;
:                iPos = strstr(strTmp.c_str(), "0x");
:                if(iPos)
:                {
:                     result = iPos - strTmp.c_str() + 1;
:                     image[i] = StrToInt(strTmp.SubString(result, 4));
:                     strTmp = iPos+6;
:                     i=i+1;
:                  }
:                  else exist_0x = FALSE;
:            }
:
:            memcpy((char *)Qdata[count].IMG, image, size);
: //---------------------------------------------------------------------------
:
: 부탁 드립니다.

님의 소스에는 여러가지 문제점이 있지만,
가장 핵심적인 건요,
Memo1->Text가 아니라 Memo1->Lines->Text로 해야합니다.
왜 이렇게 해야 하는 지는 도움말과 빌더 책을 참고하세요.

참고로, 빌더에서 문자열을 다룰 때, C 스타일의 char* 배열 사용은 지양하는 것이 좋습니다.
(흠... 이건 오리지날 C식의 코드를 지극히 싫어하고 C++만을 사용하는
저의 개인적 취향이기도 합니다. ^^;)
가능한 한 String(AnsiString)이나 string을 주로 사용하세요.

그리고 다음 코드는 Memo1에 "0x01, 0x02, 0x03, 0x04 ..."이 입력되어 있다고 할 때,
정수 벡터에 이 값을 차례로 넣고 다시 출력하는 예제입니다.

    Memo1->Lines->Text = StringReplace(Memo1->Lines->Text, ",", "\n",
        Sysutils::TReplaceFlags() << Sysutils::rfReplaceAll);
   
    vector<int> vInt;
    for(int i = 0; i < Memo1->Lines->Count; i++)
      vInt.push_back(Memo1->Lines->Strings[i]);
    for(int i = 0; i < vInt.size(); i++)
      cout << vInt[i] << endl;



+ -

관련 글 리스트
17084 이런 경우 어떻게 해야할지 갈켜주세요..? 김경완 812 2002/04/01
17102     Memo1->Text가 아니라 Memo1->Lines->Text로 해야합니다. 김백일 1215 2002/04/01
17095     Re:이런 경우 어떻게 해야할지 갈켜주세요..? 꼴(이성렬) 838 2002/04/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.