|
고영문 님이 쓰신 글 :
:
: if( wctime <= 10)
: {
: Chart1->Series[0]-> AddXY(wctime,y[1],"",clYellow);
: Chart1->Series[1]-> AddXY(wctime,y[0],"",clBlue);
: }
: else
: {
: tmpX1 = Chart1->Series[0]->XValues->Value[(int)wctime] - Chart1->Series[0]->XValues->Value[(int)wctime-1];
: tmpX2 = Chart1->Series[1]->XValues->Value[(int)wctime] - Chart1->Series[1]->XValues->Value[(int)wctime-1];
:
: Chart1->Series[0]->Delete(0);
: Chart1->Series[1]->Delete(0);
: Chart1->Series[0]->AddXY(wctime+tmpX1, y[1], "", clYellow); // Chart1->Series[0]->XValues->Last()
: Chart1->Series[1]->AddXY(wctime+tmpX2, y[0], "", clBlue); // Chart1->Series[0]->XValues->Last()
: }
:
: 위의 코드는 제가 실험에 사용하고 있는 for문 안에서 실행되고 있고 여기에서 에러가 나타납니다. 그래프
:
: 는 잘그려지구요.,wctime = 샘플링하고 있는 현재 시간입니다. 물론 double형이구요.
:
: 그런데 어느 정도 시간이 되면 아래와 같은 error가 뜹니다. 도통 무슨 말인지 어디가 잘못되었는지 이해
:
: 가 가질 않는군요. 여기 Q&A에 TList error에 대해 있어서 봤지만 무슨 말인지 이해가 안갑니다. 어케 해결
:
: 을 해야 하는지 ...큰일임돠..급한데..고수님덜의 현명한 방법을 배우고자 합니다.
:
: "Project FineProjcet.exe raised exception class TListError with message'List index out of bounds(521)'
:
: 521은 시간( 배열일 수 도있구요..)입니다. 이 값은 300에서 발생할 수도 있고 왔다갔다 합니다.
안녕하세요..홍성진 입니다.
님께서 말씀하신 에러는 허용되지 않은 범위를 접근해서 그런겁니다.
예를들면, TList의 count가 10개일때, List1->Items[10]; 이런식으로 접근하면
위와같은 에러가 나겠지요...TList는 0부터 시작하니까요.
만약에 님께서, TList 아이템에 대해 추가, 삭제가 빈번이 일어난다면, 동기화를
잘 맞춰주셔야 할겁니다.
그런오류를 없애는 쉬운 방법은 항상 값을 액세스 하기전에 사용하려는 인덱스가
TList의 count범위안에 드는지 먼저 확인하고 접근하세요...
다른 방법으로 예외처리도 있구요..
좋은결과 있으시길 바랍니다..
그럼...
|