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
[45687] Re:Re:Re:Re:Re:ListBox 에서요...
장성호 [nasilso] 1367 읽음    2006-07-18 11:51
그냥  바로 답변 달아서.. 코드가 좀 부실했네요
int tmp1도 두번 선언되어있었고
ListBox1->Items이 있는지 없는지 확인을 하지 않았네요
에러 "List Index Out of bounds(0)" 는 ListBox1에 아이템이 하나도 없어서 난 에러입니다.
아래 코드로 다시 해 보세요
ListBox1 아이템에 Add한 String이 숫자가 아닌 경우가 아니라면 Error가 날 일은 없을것입니다.


void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    ListBox1->Items->Add(IntToStr(X));
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{

     int tmp1,tmp2;
     int iMoveDistance=0; //이동거리저장할 변수

     if(ListBox1->Items->Count)
     {
         tmp1=StrToInt(ListBox1->Items->Strings[0]);//첫번째 값을 비교를 위해 따로 저장합니다.

         for(int i=1;i<ListBox1->Count;i++) //ListBox내의 Item 수
         {
              tmp2= StrToInt(ListBox1->Items->Strings[i]); //비교해야할 i 번째 Index의 값을 정수로 변환한다.
              iMoveDistance+=abs(tmp1-tmp2); //이동한거리만큼 더한다.
              tmp1=tmp2; //비교값 재설정..
         }
     }
     ShowMessage("이동거리는="+IntToStr(iMoveDistance)); //이동거리를 보여줌
}

허접 님이 쓰신 글 :
: 답변 감사드립니다..  
: 그런데, 에러가 발생하는데요.   ㅠ.ㅜ
: 워낙 허접한지라....
:
: 에러 메세지 내용 :
:
: Project RS232Test.exe raised exception class EStringListError with message 'List Index Out of bounds(0)'. Process stopped. Use Step or Run to continue.
:
: 라는 에러가 생기네요..   ㅠ.ㅜ
:
:
:
: 장성호 님이 쓰신 글 :
: : 이런것까지 질문이..
: :
: :  void __fastcall TForm1::Button1Click(TObject *Sender)
: :  {
: :     int tmp1,tmp2;   
: :     int iMoveDistance=0; //이동거리저장할 변수
: :    
: :    int tmp1=StrToInt(ListBox1->Items->Strings[0]);//첫번째 값을 비교를 위해 따로 저장합니다.
: :
: :     for(int i=1;i<ListBox1->Count;i++) //ListBox내의 Item 수
: :     {
: :           tmp2= StrToInt(ListBox1->Items->Strings[i]); 비교해야할 i 번째 Index의 값을 정수로 변환한다.
: :          iMoveDistance+=abs(tmp1-tmp2); //이동한거리만큼 더한다.
: :          tmp1=tmp2; //비교값 재설정..
: :     }
: :     ShowMessage("이동거리는="+IntToStr(iMoveDistance)); //이동거리를 보여줌
: :  }
: :
: : X좌표 이동거리 구했으니 Y좌표 알아서 함 해보세요
: : 
: :
: :
: :
: : 허접 님이 쓰신 글 :
: : : 님.. 답변 감사드려요...   ^^
: : : 그런데, 지금 하려고 하는건 마우스 커서가 이동하는 위치에 따라 ListBox에 x, y 좌표값이 찍힙니다.
: : : x 좌표만 찍힌다는 가정하에... 아래와 같이,
: : :
: : : |----|
: : : |150 |
: : : |151 |
: : : |152 |
: : : |153 |
: : : |154 |
: : : |155 |
: : : |156 |
: : : |.     |
: : : |.     |
: : : |.     |
: : : |.     |
: : : |.     |
: : : |---|
: : :
: : : 이렇게 값이 들어가는데, 총 이동한 거리를 구하고 싶은겁니다.
: : : 저 값들을 다 더해주면..   ㅡㅡ;;    실제 이동한 거리가 아니라, 어떤 위치에서의 좌표값을 다 더해주는 결과가 되잖아요?
: : : 이동한 거리를 구하고 싶어요..   위 예의 경우를 보면, 6이 되겠네요..   
: : : 도와주세요.. 
: : :
: : :
: : :
: : : zepirox 님이 쓰신 글 :
: : : : 허접 님이 쓰신 글 :
: : : : : ListBox 에 정수값이 주루룩 들어갑니다..
: : : : :
: : : : : 그 값들을 모두 더해서 그 합 값을 나타내 주고 싶은데요..
: : : : :
: : : : : 더할 수 있나요?  있다면, 어찌해야 하는지 도와주세요.. 
: : : : :
: : : : : 모르겠어요..  ㅠ.ㅜ
: : : :
: : : : 아래와 같이 하면 되겠죠..
: : : : ListBox에 1부터 10까지 입력하고 더해주는 코드입니다.
: : : : 답은 55가 나와야 겠죠..
: : : : void __fastcall TForm1::Button1Click(TObject *Sender)
: : : : {
: : : :  int temp=0;
: : : :  for(int i=0;i<ListBox1->Count;i++) //ListBox내의 Item 수
: : : :  temp+= StrToInt(ListBox1->Items->Strings[i]); i 번째 Index의 값을 정수로 변환하고 더해준다...
: : : :
: : : :  ShowMessage(IntToStr(temp)); 더해준 값을 문자형으로 변경하고 보여준다.....
: : : : }

+ -

관련 글 리스트
45659 ListBox 에서요... 허접 892 2006/07/15
45660     Re:ListBox 에서요... zepirox 997 2006/07/15
45661         Re:Re:ListBox 에서요... 허접 1107 2006/07/15
45662             Re:Re:Re:ListBox 에서요... 장성호 1150 2006/07/15
45684                 Re:Re:Re:Re:ListBox 에서요... 허접 1058 2006/07/18
45687                     Re:Re:Re:Re:Re:ListBox 에서요... 장성호 1367 2006/07/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.