빛의 암살자님 답변이 좀 이상하네요
잘못된 설명과 더 심각한 문제의 코드를 제시하셨네요
하준희님 코드는..
C++Builder6에서는 문제 없습니다.
그런데 에러가 난다고 하시니
아마 Builder버젼이 2009이상인듯 하네요
2009이상에서는 Control의 Text 및 Caption이 AnsiString이 아니라
UnicodeString입니다.
UnicodeString은 c_str() 에 char* 가 아닌 wchar_t * 를 return 합니다.
wchar_t 배열이면 문제 없겠지만
char 배열이면 AnsiString으로 먼저 변환한후에 할수 밖에 없을것 같습니다.
참고로
AnsiString으로 변환할때 그냥 대입하시는것이 편리합니다.
//2009이상에서 UnicodeString를 char배열에 복사하려면..
char c[100];
AnsiString a=Edit1->Text;
strcpy(c, a.c_str());
아 그리고..
문자열이 너무 길면 문제가 될수도 있겠죠..
이상입니다.
그럼..
빛의암살자 님이 쓰신 글 :
:
: char *c;
: strcpy( c, Edit1->Text.c_str() );
:
:
: 이렇게 해야 가능합니다.
:
: 질문글에서는 c 를 배열로 선언했으니, c 는 배열명이 됩니다.
: 배열명은 상수이므로 대입이 불가능하죠.
:
: 또 하나, 위처럼 소스를 짜는 것은 매우 위험한 상황이 올 수 있습니다.
: 메모리 몇 바이트 줄이자고 짜 놓은 소스가
: 다른 메모리 영역까지 침범하게 되는 경우가 발생될 수 있으니...
:
:
: 하준희 님이 쓰신 글 :
: :
: : char c[100];
: : AnsiString a;
: :
: : a = Edit1->Text.c_str();
: : strcpy(c, a.c_str());
: :
: : 에디트박스에 입력된 내용을 char 배열에 값을 복사할려고합니다
: : 제가 위에 넣은 방법대로 하면 잘되는데요
: : 괜히 a변수를 사용해서 메모리 낭비가 되는데
: : 다른방법이 없을까요?
: : strcpy(c,Edit1->Text.c_str()); 하면 에러가 발생하는데