|
장성호님 늘 답변 감사합니다^^
if(i+7 <StrLst->Count ){
if((StrLst->Strings[i].AnsiCompare("$test"))== 0 & StrLst->Strings[7] == "1")
{
VrUserLed3->Active = true;
Edit4->Text = StrLst->Strings[(i-1)+3]+"."+StrLst->Strings[(i-1)+2];
Edit5->Text = StrLst->Strings[(i-1)+5]+"."+StrLst->Strings[(i-1)+4];
}
} // if(i+7 <StrLst->Count ){
이렇게 추가했습니다.
이번엔 exception evarianterror 이 에러가 발생하네요.ㅠㅠ
장성호 님이 쓰신 글 :
: "index out of bound" 에러가 나지 않나요?
:
: Edit4->Text = StrLst->Strings[(i-1)+3]+"."+StrLst->Strings[(i-1)+2];
: Edit5->Text = StrLst->Strings[(i-1)+5]+"."+StrLst->Strings[(i-1)+4];
:
: 위 코드에서
: i = StrLst->Count -1 이면 어떻게 되죠?
:
: (i-1)+4 하면 StLst->Count를 넘어가는데....
:
: (i-1)+7 등의 값이 StLst->Count 보다 작은지 체크하는 코드가 들어가야 에러가 나지 않을듯 하네요
:
: 그럼..
:
:
:
: 아자! 님이 쓰신 글 :
: : void __fastcall TForm1::ComThread1PacketReceived(TObject *Sender,
: : AnsiString &buffer)
: : {
: :
: : buffer = "$test,,,,,,1,,,,M,,M,,*66\r\n$head,,,,,,V,N*64\r\n$speed,,V,2,3,4,5,6,7,8,9,,N*53\r\n";
: : //Memo1->SelText = buffer + "\r\n";
: : TStringList *StrLst = new TStringList();
: : StrLst->CommaText = buffer;
: :
: : for(int i=0; i<StrLst->Count; i++)
: : {
: : if(StrLst->Strings[i].Trim() == "") StrLst->Strings[i] = "0";
: :
: : if((StrLst->Strings[i].AnsiCompare("$test"))== 0 )//& StrLst->Strings[7] == "1")
: : {
: : VrUserLed3->Active = true;
: : Edit4->Text = StrLst->Strings[(i-1)+3]+"."+StrLst->Strings[(i-1)+2];
: : Edit5->Text = StrLst->Strings[(i-1)+5]+"."+StrLst->Strings[(i-1)+4];
: : }
: : else if((StrLst->Strings[i].AnsiCompare("$speed"))== 0)
: : {
: : Edit3->Text = StrLst->Strings[(i-1)+7]*1.8;
: : }
: : }
: : Memo1->Text = StrLst->Text;
: : delete StrLst;
: : }
: :
: : 이렇게 구현했습니다.
: :
: : 즉 buffer에 있는 값들을
: : buffer = "$test,,,,,,1,,,,M,,M,,*66\r\n$head,,,,,,V,N*64\r\n$speed,,V,2,3,4,5,6,7,8,9,,N*53\r\n";
: :
: : StrLst->Strings[i]에 넣어두고(값이 없는 부분은 0으로 처리해서)
: : StrLst->Strings[i]여기서 $test 이값과 일치하면 이값뒤에 몇번째 인자를 가져와서 비교를 하고.
: : 몇번째 인자의 값에서 데이타를 추출해오는걸 하려고 합니다.
: :
: : 즉
: : $test 이거일때는 저기 1에 값을 받아와서 확인하고.
: : $speed 이문자 뒤에는 7이라는 값을 받아와서 계산하는 겁니다.
: : 그런데 자꾸만 이런 에러가 납니다.ㅠㅠ
: :
: :
: : 왜그런걸까요..ㅠㅠ
|