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
[52819] Re:체크섬 만드는 프로그램인데요 실행시 발생하는 에러 내용을 잘 모르겠습니다.
장성호 [nasilso] 1178 읽음    2008-03-21 10:50
while(packet[size] !='\0')
        printf("%d",size++);

위 while문에서 packet배열에 쓰레기값이 꽉차 있다면  ...  while문이 언제 끝나죠?


참고..

1. AnsiString은  한Byte씩 즉 char씩 배열로 접근이 가능합니다.
    새로운 char 버퍼를 선언하고 그곳에 copy할 필요 없다는것입니다.
 
    (단, 배열의 번지는 1번지 부터 시작합니다.)

2. AnsiString은 길이를 제공해주는 함수가 있습니다.  str.Length();
    AnsiString을 쓰지 않고 char 버퍼를 사용하더라도 while문돌릴것이 아니라 strlen()으로 구하면 되겠죠

      이런식으로...

      str.printf("C0""%d"",B3,REQ,""%d",Cont,Bar);
      char  cksum = str[1];
      for(int i =2 ; i <= str.Length() ; i++)cksum^= str[i];


이렇게 적어주면 안되는데....

그럼..   


sunje 님이 쓰신 글 :
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include <stdio.h>
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
:     : TForm(Owner)
: {
:
:     Cont=1;
:     Bar=1;
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
: //    int Cont;     ->헤더파일
: //    int Bar;   ->헤더파일
:     AnsiString str, str2, str3;
:
:     if( Cont <=9 )
:     {
:         str.printf("C0""%d"",B3,REQ,""%d",Cont,Bar);
:
:         char packet[] = "";
:         int i;
:         int size = 0;
:         char cksum = 0;
:
:         sprintf(packet, "%s", str);
:
:         while(packet[size] !='\0')
:             printf("%d",size++);
:
:             printf("\n");
:
:         for(i = 0 ; i < size ; i++)
:         {
:             if(i == 0)
:                 cksum = packet[i];
:             else
:                 cksum^= packet[i];
:         }
:
:         str3.printf("%X",cksum);
:
:         Edit4->Text = str3;
:
:         str2.printf("$C0""%d"",B3,REQ,""%d""*""%x""\n ",Cont,Bar,cksum);
:
:         Memo1->Lines->Add( str2 );
:       
:     Bar++;
:        
:     if (Bar>=9 )
:         {
:             Cont++;
:             Bar=1;
:         }
:     }
: }
: //---------------------------------------------------------------------------
:
: 들어온 데이터에 대해 체크섬을 만들려고 하는데요.
: 위의 프로그램을 실행하면 아래 부분부터 메세지 창과 함께 프로그램이 멈추네요...
:        
: Edit4->Text = str3;
:
: str2.printf("$C0""%d"",B3,REQ,""%d""*""%x""\n ",Cont,Bar,cksum);
:
: Memo1->Lines->Add( str2 );
:
: 이유를 잘 모르겠습니다.
: 고수님들의 조언 부탁드립니다.......

+ -

관련 글 리스트
52814 체크섬 만드는 프로그램인데요 실행시 발생하는 에러 내용을 잘 모르겠습니다. sunje 1111 2008/03/21
52819     Re:체크섬 만드는 프로그램인데요 실행시 발생하는 에러 내용을 잘 모르겠습니다. 장성호 1178 2008/03/21
52831         Re:Re:장성호님 답변 감사드립니다.^^ sunje 1153 2008/03/21
52816     Re:체크섬 만드는 프로그램인데요 실행시 발생하는 에러 내용을 잘 모르겠습니다. 아제나 1043 2008/03/21
52817         Re:Re:아제나님 답변 감사드립니다.^^ sunje 1106 2008/03/21
52815     Re:체크섬 만드는 프로그램인데요 실행시 발생하는 에러 내용을 잘 모르겠습니다. 금목암 999 2008/03/21
52818         Re:Re:금목암님 답변감사드립니다.^^ sunje 940 2008/03/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.