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
[47986] Re:초보: Edit1에서 String받아 오기
장성호 [nasilso] 1021 읽음    2007-02-05 18:09
Edit1->Text 가 원하시는 내용인데요

1Byte씩 짤라서 보내겠다는 말씀이죠?


1. 한번에 ...

     Edit1->Text.c_str()   ==> 이것이 원하시는 string의 char * 입니다.
     길이는  Edit1->Text.Length() 하시면 되구요

WriteBuffer( Edit1->Text.c_str() ,  Edit1->Text.Length() ) ;  //==> 뭐 이런식으로 하면 한번에 가겠네요

rs232통신 컴포넌트를 쓰신하면 컴포넌트에 string을 한번에 내보내는 함수가 있는경우가 많습니다.

예) WriteString ()  , PutString ...등


2. 한번에   한 char씩

  2-1  AnsiString 형의 Text에서 c_str()해서  pointer를 ++ 하면서 1Byte씩 내보내도 되구요

  2-2  AnsiString은 배열로 접근하는 방법이 있는데.. .

        Edit1->Text[1]  하면 첫번째 char 입니다.

        주의 -  Text[0]은 없습니다. , Text[1] 부터 있음을 명심하십시요
        
         for (int i=1 ; i <=  Edit1->Text.Length() ; i++)
         {
                WriteChar ( Edit1->Text[i]);
         }


   2-3
      Edit1->Text[] 접근이 헷길리시면
      그냥 Buffer선언해서 string을 copy하십시요
       char * cBuf[256];
       strcpy(cBuf,Edit1->Text.c_str());
       -----------------------------
       이렇게 한다음
       한Byte씩 보내든 한번에 전부다 보내든 알아서 하시면 되겠죠~!


  
추신
   1. WriteBuffer ,  WriteChar  는 제가 임의로 명명한 함수입니다.

   2. Edit1->Text에 "123" 이있었으면

       그값을 그대로 write할경우 hex로 보면   0x31, 0x32 , 0x33  이 나가게 되죠
            (ASCII 테이블을 보고 확인 하실수있습니다.)



 


빌리 님이 쓰신 글 :
: 제가 Edit1에 쓰여진 123이라는 숫자를 하나씩 짤라서 RS232통신으로 각각 데이터를 날리려고 하는데요 잘 모르겠네요...
:
: Edit1에서 첫번째 자리에 1을 받아서 데이터 날리고,
:
: Edit1에서 두번째 자리에 2를 받아서 데이터 날리고,
:
: Edit1에서 세번째 자리에 3을 받아서 데이터를 날리려고 합니다.
:
: 알려주세요...

+ -

관련 글 리스트
47983 초보: Edit1에서 String받아 오기 빌리 709 2007/02/05
47986     Re:초보: Edit1에서 String받아 오기 장성호 1021 2007/02/05
47993         Re:상세한 답변 감사합니다... ^^ 빌리 799 2007/02/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.