C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[65829] 에러가 다른 부분에서 나는거 아닌가요?
조대현.Clau [casanebula] 922 읽음    2011-12-30 00:15
포함되 소스를 그대로 복사해서 실행해보니 에러는 나지 않습니다.
다른 부분에서 나는것이 아닌지요?

일단 문자열 길이 확인은 try로 넘기시구요.

정확한 에러 위치부터 찾아야 할듯합니다.

작성하신 소스는 잘 되는거 같습니다.

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++)
   {
    try{
        if(StrLst->Strings[i].Trim() == "")
        StrLst->Strings[i] = "0";

        if((StrLst->Strings[i].Compare("$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].Compare("$speed"))== 0)
        {
            Edit3->Text = StrLst->Strings[(i-1)+7]*1.8;
        }
    }catch(...){
    }
  }
   Memo1->Text = StrLst->Text;
   delete StrLst;




아자! 님이 쓰신 글 :
: 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이라는 값을 받아와서 계산하는 겁니다.
: 그런데 자꾸만 이런 에러가 납니다.ㅠㅠ
:
:
: 왜그런걸까요..ㅠㅠ

+ -

관련 글 리스트
65823 TStringList 사용시 에러 문제 아자! 982 2011/12/29
65829     에러가 다른 부분에서 나는거 아닌가요? 조대현.Clau 922 2011/12/30
65824     Re:TStringList 사용시 에러 문제 장성호 1143 2011/12/29
65825         Re:Re:TStringList 사용시 에러 문제 아자 913 2011/12/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.