|
그냥 밑에 해미님의 답변처럼 대입하시면 됩다.
하지만 꼭 CopyMemory 나 memcpy를 쓰시고자한다면?
SetLength() 함수로 미리 AnsiString에 메모리를 확보 해놓아야 합니다.
그냥 AnsiString 선언만 해 놓은상태이면
char *는 c_str()로 접근할수 있기만 그 포인터가 가리키는 메모리가 확보되지 않는 상황이므로
기냥 memcpy하면 access voilation이 나겟죠
void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString str;
char *buf="1234567890";
str.SetLength(strlen(buf)); // 메모리 확보 ==> 핵심
CopyMemory(str.c_str(), buf, strlen(buf)); // memcpy(str.c_str(), , buf, strlen(buf));
// CopyMemory(&str[1], buf, strlen(buf)); // memcpy(&str[1], buf, strlen(buf));
}
//---------------------------------------------------------------------------
그럼...
AnsiString 님이 쓰신 글 :
: CopyMemory(ansi.c_str(), szChar, nSize);
:
: 이런구분은 먹히질 않는건가요?
:
: ansi값은 계속 NULL만 뜨고..
: szChar값은 정상인데 말이죠..
:
: 반대경우만 써보다가..
:
: 저렇게 할려니 안되서..
:
: 아시는분계시면 도와주세요. ;
|