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
[69373] Re:Re:for문 오류 질문
정종범 [tigerdaniel] 4382 읽음    2013-04-19 23:37
빠르고 친절한 답변 감사합니다!!
덕분에 해결됬습니다.

장성호 님이 쓰신 글 :
: strcpy에서 발생하네요
: 원인은 저도 잘 모르겠습니다.
: AnsiString변수 a의 바로앞이 int l 인데..
: strcpy안에서 침범하는것 같네요
: (CBuilder2010에서 CC32100MT.DLL에 구현된 CRT함수)
: 변수 l 과 a 사이에 dummy 1Byte이상 변수 하나 추가하면
: 문제는 사라집니다.(아래코드 처럼 ,  CBuilder버그인가?)
:
:
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:     int i, l = Memo1->Text.Length();
:     int dummy;// 이렇게 더미변수를 끼워 넣으면 문제 사라짐 
:     AnsiString t,a;
:     char b[1];
:     t = Memo1->Text;
:  
:     for(int i=1; i<=l; i++)
:     {
:         a = t.SubString(1,1);
:         strcpy(b,a.c_str());
: //        Memo2->Lines->Add(int(b)); 
:         Memo2->Lines->Add(int(b[0]));  //다음과 같이 해야 ASCII가 제대로 들어감
:         t.Delete(1,1);
:        // l = Memo1->Text.Length();
:     }
: }
: 

:
: 그런데 말씀하신 ASCII로 바꾸려면 위와같이 수정해야 할것 같습니다.
:
: //=============================================
: 조금더 효율적인 코드로 바꾸려면..
: 다음과 같은 식으로 하면 될듯합니다.
:
: void __fastcall TForm8::Button2Click(TObject *Sender)
: {
: 	 AnsiString t = Memo1->Text;
: 	 char *p=t.c_str();
: 	 while(*p)
: 	 {
: 		Memo2->Lines->Add(int(*p++));
: 	 }
: }
: 

:
: 그럼..
:
:
: 정종범 님이 쓰신 글 :
: :
: : void __fastcall TForm1::Button2Click(TObject *Sender)
: : {
: :     int i, l = Memo1->Text.Length(); //Memo1은 입력받은 문자
: :     AnsiString t,a;
: :     char b[1];
: :     t = Memo1->Text;
: : 
: :     for(int i=1; i<=l; i++) //한 개씩 변환하기 위해 for문을 사용
: :     {
: :         a = t.SubString(1,1);
: :         strcpy(b,a.c_str());
: :         Memo2->Lines->Add(int(b)); //Memo2는 ASCII 코드값을 나타내는 곳
: :         t.Delete(1,1); 
: :        // l = Memo1->Text.Length();
: :     }
: : }
: : 

: : 배열의 문자열을 ASCII 코드값으로 변경하는 소스인데요. (사실 좀 비효율적인거 같지만,,,)
: : For문을 한번 돌고 나오면 (for문)조건부분의 변수 'l'의 값이 바뀌네요.
: : 그래서 주석처리한 부분을 넣어줘야 제대로 실행이 되네요.
: : 근데 도저히 for문의 'l'값이 변하는 이유를 알 수가 없어서 질문을 드립니다.

+ -

관련 글 리스트
69369 for문 오류 질문 정종범 4810 2013/04/19
69374     Re:for문 오류 질문 5333 2013/04/20
69372     Re:for문 오류 질문 라스코니 1732 2013/04/19
69370     Re:for문 오류 질문 장성호 3694 2013/04/19
69373         Re:Re:for문 오류 질문 정종범 4382 2013/04/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.