AnsiString을 잘못 사용하고 있습니다~
AnsiString이 어떤 타입인지 확인해보세요
질문입니다 님이 쓰신 글 :
: 안녕하세요
: AnsiString 배열을 전역변수에 놓고 form show 시 배열에 값을 넣어줬습니다.
:
: 예시:
: unit1.h
: class TForm1: public TForm
: {
: private: // User declarations
: AnsiString asArr[];
: }
: //------------------------------
: unit1.cpp
: void __fastcall TForm1::FormShow(TObject *Sender)
: {
: if(true)
: {
: AnsiString asArr2[] = {"1","2","3"};
: asArr->SetLength(strlen(asArr2->c_str()));
: memcpy(asArr,asArr2,sizeof(asArr2));
: }
: else
: {
: AnsiString asArr2[] = {"5","6","7"};
: asArr->SetLength(strlen(asArr2->c_str()));
: memcpy(asArr,asArr2,sizeof(asArr2));
: }
: }
: //------------------------------
:
: breakpoint를 걸어서 확인해보니 FormShow까지 제대로 값이 넣어졌습니다.
: 이후에 click 이벤트를 통해서 asArr의 값에 접근을 하고 두번째 클릭에서 asArr의 값들이 쓰레기 값으로 변했습니다.
: memcpy를 잘못 사용하고 있는 걸까요?
|