|
안녕하세요... 배열에 관한 질문을 드립니다.
아래 소스코드에서 소켓통신으로 GetMsg를 320바이트만큼 읽어들입니다.
디버깅을 했을때 GetMsg값은 아주 잘 받아들여 집니다.
그런데 문제는 GetMsg값이 strReadpacket이라는 AnsiString으로 들어가거나
charSubString이라는 함수를 만들어서(이것은 AnsiString형을 substring 하는 함수와 똑같은 일 char 형에서 합니다.)
사용을 해도 계속해서 값이 변형되어 버립니다.
전자는 strReadpacket의 끝에 계속 쓰레기 값이 들어가며 후자는 중간중간에 아예 값이 변형되어 버립니다.
이런경우에는 어떻게 해야 하는지 조언 부탁드립니다.
그럼 수고 하십시오..
void __fastcall TMainForm::IdTCPServer1Execute(TIdPeerThread *AThread)
{
AnsiString strReadpacket, strGetTel ;
char PutMsg[320];
char GetMsg[320];
try{
while (AThread->Connection->Connected() ) {
AThread->Connection->ReadBuffer(GetMsg,320);
strReadpacket = GetMsg; <- 요부분에서 값이 변형됩니다.
for(int i = 84; i < 104; i++){
if(strReadpacket.SubString(i, i+1) == " "){
strGetTel = strReadpacket.SubString(84,i);
break;
}
}
AThread->Connection->WriteBuffer(PutMsg,320);
free(GetMsg);
}
}catch(...){
AThread->Connection->Disconnect();
AThread->Data = NULL;
}
}
|