안녕하세요
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를 잘못 사용하고 있는 걸까요?
|