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
[61222] Re:Re:Re:Re:Re:Re:Re:AnsiString질문이요~
장성호 [nasilso] 1108 읽음    2010-05-28 10:50
제가 copy & paste하면서 .. 잘못했네요.. 쩝쩝
아제나님이 작성하신 코드가 제가 작성하려고 했던 코드입니다.

 char *A;
 AnsiString B;
 B = ComComboBox1->Text;
 A = B.c_str();



아제나 님이 쓰신 글 :
: char *A;
: AnsiString B;
: B = ComComboBox1->Text;
: A = B.c_str();
:
: B를 추가적으로 할당하지만, 내부적으로 레퍼런스 카운트만 증가하기 때문에
: 메모리 복사 같은 일이 발생하지 않아 속도에서 memcpy를 이용한 메모리 복사보다 이득입니다.
: 추가적으로 이용하기도 편리하고 말이죠. B.length() 등...
:
: 요즘처럼 메모리 4G씩 장착하는 세상에서 변수 선언에 인색할 필요는 없죠.
:
: ben 님이 쓰신 글 :
: :
char * A;   
: : A = ComComboBox1->Text.c_str();   

: :
: : 보다는..
: :
: :
char  A[1024];
: : memset(A, 0x00 , sizeof(A));   
: : strcpy( A , ComComboBox1->Text.c_str() );   

: :
: : 뭐.. .이렇게 하시면 ok?
: :
: :
: :
: :
: : 장성호 님이 쓰신 글 :
: : :
: : :  char * A;
: : :  A = ComComboBox1->Text.c_str();
: : :  

: : : 위와같이 하면 char*를 받아올수 있습니다.
: : :
: : : 하지만..
: : : char *A를 쓰려고 하면.. 이미 무효화된 메모리의 포인터입니다.
: : :
: : : 전에 도 말씀드렸듯이 TControl의 모든 Text나 Caption은 Property로써
: : : 내부 맴버 String변수를 return해주는것이 아니라..
: : : Text를 가져와서 임시메모리를 할당해서 return해주고
: : : String으로 받는놈이 없으면 곧바로 free해버립니다.
: : :
: : : 다음과 같이해야합니다.
: : : 
: : :   char * A;
: : :   AnsiString s=ComComboBox1->Text.c_str();
: : :   A = s.c_str();
: : :  

: : :
: : : 팁&트릭 게시판에 퀴즈를 통해
: : : 위와같은 코드의 문제점을 지적한적 있습니다.
: : : http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=961
: : :
: : : 그럼..
: : :
: : :
: : :
: : : 송신영 님이 쓰신 글 :
: : : : AnsiString 에는 .c_str()이라는 메소드를 지원해 줍니다. 이 함수는 char * 형을 리턴합니다.
: : : :
: : : :
: : : : char * A;
: : : : A = ComComboBox1->Text.c_str();
: : : : 

: : : :
: : : :
: : : : BBM 님이 쓰신 글 :
: : : : : 답변 감사합니다~
: : : : : 하나만 더 여쭤볼께요.
: : : : : 제가
: : : : : char*  A
: : : : : A=  ComComboBox1->Text;
: : : : : 이런식의 선언을 했는데요.
: : : : : 이런식은 자동 형 변환이 안되나요?
: : : : : 강제형변환을 해도 에러가 해결이 안되는데요...
: : : : :
: : : : :
: : : : :
: : : : : 송신영 님이 쓰신 글 :
: : : : : : 아마도 C언어만 접해본것 같습니다.
: : : : : : 우선 C++ 의 Class 개념을 공부하셔야할것 같습니다.
: : : : : : 일단 질문하신 내용의 답변은 아래와 같습니다.
: : : : : : AnsiString 으로 선언한 변수에 그냥 int 값이나 char *값을 넣어도 자동으로 알아서
: : : : : : 변환해서 저장됩니다.
: : : : : :
: : : : : :
: : : : : : void __fastcall TForm1::Button1Click(TObject *Sender)
: : : : : : {
: : : : : :     int * pInt;
: : : : : :     int nValue = 100;
: : : : : :     char * sTemp1 = "SONG";
: : : : : :     char sTemp2[6] = {'K', 'O', 'R', 'E', 'A', '\0'};
: : : : : : 
: : : : : :     AnsiString sBuffer1, sBuffer2, sBuffer3;
: : : : : : 
: : : : : :     pInt = &nValue;
: : : : : : 
: : : : : :     sBuffer1 = *pInt;      // int * 가 포인터하는 정수 값을 저장
: : : : : :     sBuffer2 = sTemp1; // char * 스트링 저장
: : : : : :     sBuffer3 = sTemp2; // char array 스트링 저장
: : : : : : 
: : : : : :     Memo1->Lines->Add(sBuffer1); // 출력 테스트
: : : : : :     Memo1->Lines->Add(sBuffer2); // 출력 테스트
: : : : : :     Memo1->Lines->Add(sBuffer3); // 출력 테스트
: : : : : : 
: : : : : : }
: : : : : : 

: : : : : :
: : : : : : BBM 님이 쓰신 글 :
: : : : : : : 도스 프로그램을 윈도우 프로그램으로 바꾸고 있는데 윈도우 프로그램을 많이 접해보지 않아서 어려움이 많아요.
: : : : : : : 일단 문제가요.
: : : : : : : C builder에는 AnsiString이라는 연산자(?)가 있더라고요.
: : : : : : : 도스 프로그램에는 Char*나 int*형으로 이루워져 있는거를 AnsiString 변수에다가 넣으려고 하는데요.
: : : : : : : 형이 틀리다고 들어가지가 않아요.
: : : : : : : 방법이 없을까요?

+ -

관련 글 리스트
61201 AnsiString질문이요~ BBM 1031 2010/05/27
61202     Re:AnsiString질문이요~ 송신영 1262 2010/05/27
61203         Re:Re:AnsiString질문이요~ BBM 1188 2010/05/27
61204             Re:Re:Re:AnsiString질문이요~ 송신영 1075 2010/05/27
61205                 Re:Re:Re:Re:AnsiString질문이요~ 장성호 1065 2010/05/27
61217                     Re:Re:Re:Re:Re:AnsiString질문이요~ ben 1156 2010/05/28
61219                         Re:Re:Re:Re:Re:Re:AnsiString질문이요~ 아제나 1014 2010/05/28
61222                             Re:Re:Re:Re:Re:Re:Re:AnsiString질문이요~ 장성호 1108 2010/05/28
61220                             Re:Re:Re:Re:Re:Re:Re:AnsiString질문이요~ 송신영 1080 2010/05/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.