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
[37228] 둘리님 답변 너무 감사합니다. (냉무)
C++Builder [] 781 읽음    2004-09-13 03:47
친절하시군요...좋은 일만 있으시길...

둘리 님이 쓰신 글 :
: C++Builder 는 VCL 이라는 Visual Component Library 를 지원 합니다.
: Edit box 역시 TEditBox 라는 Class (VCL) 라이브러리 입니다.
: TEditBox 의 Text 는 역시 TEditBox 의 Class Property 인데
: 그 값이 AnsiString type 입니다.
: 좀더 찾아 보시면 모든 Property 들은 내부적으로 함수 콜(class 내부 member function) 을 합니다.
: 이러한 것들을 published property 들이라 하는데요.... 뭐.. 자꾸 들어가면 복잡합니다.
: 여기서 설명드릴만한 여유도 없구요..
:
: c_str() 은 AnsiString 의 member function 입니다.
: return 값은 해당 AnsiString 의 내부에 string data를 갖고 있는데 이들의 메모리를
: char * type으로 return 해 줍니다.
: AnsiString 은 class 입니다.
: 그러므로 AnsiString은 바로 다른 AnsiString 에 대입해도 결국 operator overload 에 의하여
: strcpy 같은것이 호출 되는 것 입니다.
:
: AnsiString a = "aaaa";
: AnsiString b = a;
:
: 이렇게 그냥 대입문으로 쓸수가 있는것이죠.. 여기서 b=a 의 = 은 일반적인 대입문이 아닙니다.
: 연산자를 다른 용도로 쓰도록 한 기능이 들어 가 있습니다.
:
: 그러므로
: AnsiString a = "aaa";
: char *p = a;
: 이런식으로 않된다는 것이죠.
:
: 즉 char *p 의 type 은 char * 입니다.
: 그러므로 = 대입문에 합당하게 오른쪽도 char * 여야 하지요.
: AnsiString 의 c_str() 함수는 바로 이러한 char * return 을 해줍니다.
:
: char *p = a.c_str(); 이렇게요.
:
: CBilder IDE Editor 에 AnsiString 이라 치고 커서를 갖다 놓고 F1 을 눌르시면
: AnsiString (Visual Component Library Reference) 라고 나올 것 입니다.
: 이것을 선택하시면 help 가 나오는데
: help 위에 Methods 라고 나올 것 입니다.
: Methods 를 눌르시면 AnsiString 의 method 들이 나올것이며 여기서
: c_str() 을 찾으실 수 있을 것 입니다.
:
: 감사 합니다.
:
:
:
: C++Builder 님이 쓰신 글 :
: : 안녕하세요 둘리님!
: :
: : 답변 정말 많은 도움되어 고맙습니다.
: : 한가지 잘 몰라서 더 여쭤볼께요
: : 답변중에 Text.c_str(); 라고 하셨는데 에디트박스 속성에 바로 붙여쓴 c_str()가 내장함수 인가요?
: :
: :
: : 둘리 님이 쓰신 글 :
: : : C++ Builder 에서 문자열을 다루실려면, 특히 컴포넌트와 연계해서 다루실려면
: : : AnsiString 이라는 type을 알아야 합니다.
: : : CBuilder IED Editor 에서 AnsiString 이락 치시고 F1 을 눌러 보세요.
: : : 설명이 나올 겁니다.
: : :
: : : 참고적으로
: : : Edit->Text 는 그 type 이 AnsiString 입니다.
: : : AnsiString s = Edit->Text;
: : : int char_count = s.Length(); << 이렇게 길이 구합니다.
: : :
: : :
: : : 그리고
: : : char *p = Edit->Text.c_str();
: : : for(int i=0;i<Edit->Text.Length();i++){
: : :    // 여기서 *(p+i) 를 a , b,c ,d 와 비교해서 갯수 해아리면 되겠죠?
: : :    }
: : :
: : : C++Builder는 수 많은 VCL 이라는 Visual 또는 Invisible Component 라이브러리를 사용 합니다.
: : : 언제든 F1 을 눌러 Help 를 참조 하세요.
: : : C++Builder F1 속에 거의 모든 내용이 있습니다.
: : :
: : :
: : : C++Builder 님이 쓰신 글 :
: : : : 제목대로 에디트박스에 입력된 문자열전체, 또는 문자열중에서 a,b,c,d 가 각각 몇개 인가를 알아내서 레이블이나 다른 에디트박스로 출력하는 프로그램을 짜려고 합니다.
: : : :
: : : : char x;
: : : : int counta, countb, countc, countd;
: : : :
: : : : while ((x = getchar()) != '\n'){
: : : :        switch (x){
: : : :                case 'a':
: : : :                         counta++;
: : : :                         break;
: : : :                case 'b':
: : : :                ....
: : : :                ..
: : : :
: : : : 위는 C에서의 알고리즘인데요, 저걸 약간 변형하면 될것 같은데..저는 C만 배우고 C빌더는 처음이라..
: : : : x = Edit1->Text 대충 했더니 에러...ㅠㅠ ㅎㅎ
: : : : 알려주세요..

+ -

관련 글 리스트
37220 에디트박스에 입력된 문자열의 갯수를 알아내려고 합니다. C++Builder 787 2004/09/12
37221     Re:에디트박스에 입력된 문자열의 갯수를 알아내려고 합니다. 둘리 1214 2004/09/12
37225         Re:Re:에디트박스에 입력된 문자열의 갯수를 알아내려고 합니다. C++Builder 1036 2004/09/12
37227             Re:Re:Re:에디트박스에 입력된 문자열의 갯수를 알아내려고 합니다. 둘리 1087 2004/09/12
37228                 둘리님 답변 너무 감사합니다. (냉무) C++Builder 781 2004/09/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.