Q&A

  • TChart 많이 써보신 분...제발 저 좀 도와주세요~~~제발
실시간 디스플레이를 하고자 합니다...

List index out of bounds (800) 이라는 에러때문에 미치겠습니다...

거의 몇개월째 고생하고 있습니다...

OnAfterAdd라는 함수는 차트에 Add를 하면 발생하는 이벤트이고...

아래와 같이 프로시저를 구현했습니다...

일단 Seires1의 Min값을 0으로 하고...Max값을 1000으로 하였고...

그래프를 그리다가 800개를 그리고나서부터는...

하나씩 지우기 시작합니다...

delete를 시작하게 되면...그에 맞추어서 Min값과 Max값이 증가하게 됩니다...

1초에 100개정도를 차트에 뿌려줍니다...

어떻게 하면 좋을까요?

오늘도 새벽까지 이 일을 하고 있습니다...

이 에러 때문에요...

좀 도와주세요~~~



procedure TForm1.Series1AfterAdd(Sender: TChartSeries;

ValueIndex: Integer);

// Chart에 Add할 때마다 발생하는 event

var

i: Integer;

begin

evt_cnt:=evt_cnt+1;

if totalfg=False then

// total view일 때는 실시간처럼 보이게 할 필요 없음

begin

with Sender.GetHorizAxis do { <-- with the Horizontal Axis... }

begin

Automatic := False;

Minimum:=0; // 다시 begin을 눌러도 될 수 있도록 초기화

if ValueIndex < 800 then

begin

Maximum:=999;

Minimum:=0;

end

else

begin

Minimum:=Sender.XValues[0]+1;

Maximum:=Minimum+999;

Sender.Delete(0);

end;

Label5.Caption:=FloatToStr(Maximum);

Label6.Caption:=FloatToStr(Minimum);

Label7.Caption:=FloatToStr(ValueIndex);

Label8.Caption:=FloatToStr(Sender.XValue[0]);

end;

end;

end;



부탁드려요~~~

3  COMMENTS
  • Profile
    최용일 2001.05.10 20:58
    안녕하세요. 최용일입니다.



    이건 말 그대로 out of bounds인데요. 님께서 어떤 리스트에다가 800개의 자료를 넣었다면 그것들의 인덱스는 0부터 799까지가 되겠죠. 그런데 아무런 자료가 없는 800번째의 자료를 접근할려면 이런 에러가 발생합니다. 800번째에 자료가 있는가를 살펴서 인덱스를 잘 맞추세요...



    ^^ 항상 즐코하세요...



    최종민 wrote:

    > 실시간 디스플레이를 하고자 합니다...

    > List index out of bounds (800) 이라는 에러때문에 미치겠습니다...

    > 거의 몇개월째 고생하고 있습니다...

    > OnAfterAdd라는 함수는 차트에 Add를 하면 발생하는 이벤트이고...

    > 아래와 같이 프로시저를 구현했습니다...

    > 일단 Seires1의 Min값을 0으로 하고...Max값을 1000으로 하였고...

    > 그래프를 그리다가 800개를 그리고나서부터는...

    > 하나씩 지우기 시작합니다...

    > delete를 시작하게 되면...그에 맞추어서 Min값과 Max값이 증가하게 됩니다...

    > 1초에 100개정도를 차트에 뿌려줍니다...

    > 어떻게 하면 좋을까요?

    > 오늘도 새벽까지 이 일을 하고 있습니다...

    > 이 에러 때문에요...

    > 좀 도와주세요~~~

    >

    > procedure TForm1.Series1AfterAdd(Sender: TChartSeries;

    > ValueIndex: Integer);

    > // Chart에 Add할 때마다 발생하는 event

    > var

    > i: Integer;

    > begin

    > evt_cnt:=evt_cnt+1;

    > if totalfg=False then

    > // total view일 때는 실시간처럼 보이게 할 필요 없음

    > begin

    > with Sender.GetHorizAxis do { <-- with the Horizontal Axis... }

    > begin

    > Automatic := False;

    > Minimum:=0; // 다시 begin을 눌러도 될 수 있도록 초기화

    > if ValueIndex < 800 then

    > begin

    > Maximum:=999;

    > Minimum:=0;

    > end

    > else

    > begin

    > Minimum:=Sender.XValues[0]+1;

    > Maximum:=Minimum+999;

    > Sender.Delete(0);

    > end;

    > Label5.Caption:=FloatToStr(Maximum);

    > Label6.Caption:=FloatToStr(Minimum);

    > Label7.Caption:=FloatToStr(ValueIndex);

    > Label8.Caption:=FloatToStr(Sender.XValue[0]);

    > end;

    > end;

    > end;

    >

    > 부탁드려요~~~

  • Profile
    최종민 2001.05.10 21:55
    지난번에도 이런 질문 드렸을 때 같은 대답을 해주셨는데요...

    800만 그러는 게 아니고...

    아무 숫자나 다 그럽니다...

    그리고 가끔씩은 잘 나옵니다...

    잘 될때도 있고 에러가 자주 날 때도 있고...

    도대체 이런 경우도 있나요?....에러가 나면 나는 거지...날때도 있고 안 날때도 있다니...

    에러가 나도 어디서 나는 지 알수도 없고...

    Series의 XValue를 살펴보면 제대로 값이 다 있다는 것도 이상하죠...

    Series의 데이터들 이외에 List를 쓰는 게 또 있을까요...

    질문을 잘 설명해드리는 것도 어렵고...

    누구좀 아무 말이라도 좋으니 리플 좀 달아주세요~~~



    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 이건 말 그대로 out of bounds인데요. 님께서 어떤 리스트에다가 800개의 자료를 넣었다면 그것들의 인덱스는 0부터 799까지가 되겠죠. 그런데 아무런 자료가 없는 800번째의 자료를 접근할려면 이런 에러가 발생합니다. 800번째에 자료가 있는가를 살펴서 인덱스를 잘 맞추세요...

    >

    > ^^ 항상 즐코하세요...

    >

    > 최종민 wrote:

    > > 실시간 디스플레이를 하고자 합니다...

    > > List index out of bounds (800) 이라는 에러때문에 미치겠습니다...

    > > 거의 몇개월째 고생하고 있습니다...

    > > OnAfterAdd라는 함수는 차트에 Add를 하면 발생하는 이벤트이고...

    > > 아래와 같이 프로시저를 구현했습니다...

    > > 일단 Seires1의 Min값을 0으로 하고...Max값을 1000으로 하였고...

    > > 그래프를 그리다가 800개를 그리고나서부터는...

    > > 하나씩 지우기 시작합니다...

    > > delete를 시작하게 되면...그에 맞추어서 Min값과 Max값이 증가하게 됩니다...

    > > 1초에 100개정도를 차트에 뿌려줍니다...

    > > 어떻게 하면 좋을까요?

    > > 오늘도 새벽까지 이 일을 하고 있습니다...

    > > 이 에러 때문에요...

    > > 좀 도와주세요~~~

    > >

    > > procedure TForm1.Series1AfterAdd(Sender: TChartSeries;

    > > ValueIndex: Integer);

    > > // Chart에 Add할 때마다 발생하는 event

    > > var

    > > i: Integer;

    > > begin

    > > evt_cnt:=evt_cnt+1;

    > > if totalfg=False then

    > > // total view일 때는 실시간처럼 보이게 할 필요 없음

    > > begin

    > > with Sender.GetHorizAxis do { <-- with the Horizontal Axis... }

    > > begin

    > > Automatic := False;

    > > Minimum:=0; // 다시 begin을 눌러도 될 수 있도록 초기화

    > > if ValueIndex < 800 then

    > > begin

    > > Maximum:=999;

    > > Minimum:=0;

    > > end

    > > else

    > > begin

    > > Minimum:=Sender.XValues[0]+1;

    > > Maximum:=Minimum+999;

    > > Sender.Delete(0);

    > > end;

    > > Label5.Caption:=FloatToStr(Maximum);

    > > Label6.Caption:=FloatToStr(Minimum);

    > > Label7.Caption:=FloatToStr(ValueIndex);

    > > Label8.Caption:=FloatToStr(Sender.XValue[0]);

    > > end;

    > > end;

    > > end;

    > >

    > > 부탁드려요~~~

  • Profile
    최용일 2001.05.10 22:10
    어떤 숫자를 넣건 그 인덱스에 데이터가 없다면 마찬가지입니다...



    그 데이터를 참조하기 전에 리스트의 Count보다 크거나 같은가 확인해보세요. 아니면 0보다 작던가...(이경우는 별로 없을거 같구요). 분명히 리스트의 Count보다 크거나 같은 인덱스를 참조하실 겁니다... 직접 디버깅해보면서 하나 하나 확인해 보세요...



    최종민 wrote:

    > 지난번에도 이런 질문 드렸을 때 같은 대답을 해주셨는데요...

    > 800만 그러는 게 아니고...

    > 아무 숫자나 다 그럽니다...

    > 그리고 가끔씩은 잘 나옵니다...

    > 잘 될때도 있고 에러가 자주 날 때도 있고...

    > 도대체 이런 경우도 있나요?....에러가 나면 나는 거지...날때도 있고 안 날때도 있다니...

    > 에러가 나도 어디서 나는 지 알수도 없고...

    > Series의 XValue를 살펴보면 제대로 값이 다 있다는 것도 이상하죠...

    > Series의 데이터들 이외에 List를 쓰는 게 또 있을까요...

    > 질문을 잘 설명해드리는 것도 어렵고...

    > 누구좀 아무 말이라도 좋으니 리플 좀 달아주세요~~~

    >

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > 이건 말 그대로 out of bounds인데요. 님께서 어떤 리스트에다가 800개의 자료를 넣었다면 그것들의 인덱스는 0부터 799까지가 되겠죠. 그런데 아무런 자료가 없는 800번째의 자료를 접근할려면 이런 에러가 발생합니다. 800번째에 자료가 있는가를 살펴서 인덱스를 잘 맞추세요...

    > >

    > > ^^ 항상 즐코하세요...

    > >

    > > 최종민 wrote:

    > > > 실시간 디스플레이를 하고자 합니다...

    > > > List index out of bounds (800) 이라는 에러때문에 미치겠습니다...

    > > > 거의 몇개월째 고생하고 있습니다...

    > > > OnAfterAdd라는 함수는 차트에 Add를 하면 발생하는 이벤트이고...

    > > > 아래와 같이 프로시저를 구현했습니다...

    > > > 일단 Seires1의 Min값을 0으로 하고...Max값을 1000으로 하였고...

    > > > 그래프를 그리다가 800개를 그리고나서부터는...

    > > > 하나씩 지우기 시작합니다...

    > > > delete를 시작하게 되면...그에 맞추어서 Min값과 Max값이 증가하게 됩니다...

    > > > 1초에 100개정도를 차트에 뿌려줍니다...

    > > > 어떻게 하면 좋을까요?

    > > > 오늘도 새벽까지 이 일을 하고 있습니다...

    > > > 이 에러 때문에요...

    > > > 좀 도와주세요~~~

    > > >

    > > > procedure TForm1.Series1AfterAdd(Sender: TChartSeries;

    > > > ValueIndex: Integer);

    > > > // Chart에 Add할 때마다 발생하는 event

    > > > var

    > > > i: Integer;

    > > > begin

    > > > evt_cnt:=evt_cnt+1;

    > > > if totalfg=False then

    > > > // total view일 때는 실시간처럼 보이게 할 필요 없음

    > > > begin

    > > > with Sender.GetHorizAxis do { <-- with the Horizontal Axis... }

    > > > begin

    > > > Automatic := False;

    > > > Minimum:=0; // 다시 begin을 눌러도 될 수 있도록 초기화

    > > > if ValueIndex < 800 then

    > > > begin

    > > > Maximum:=999;

    > > > Minimum:=0;

    > > > end

    > > > else

    > > > begin

    > > > Minimum:=Sender.XValues[0]+1;

    > > > Maximum:=Minimum+999;

    > > > Sender.Delete(0);

    > > > end;

    > > > Label5.Caption:=FloatToStr(Maximum);

    > > > Label6.Caption:=FloatToStr(Minimum);

    > > > Label7.Caption:=FloatToStr(ValueIndex);

    > > > Label8.Caption:=FloatToStr(Sender.XValue[0]);

    > > > end;

    > > > end;

    > > > end;

    > > >

    > > > 부탁드려요~~~

    • 또리
    • 2001.05.10 23:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 초보
    • 2001.05.10 22:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 처버
    • 2001.05.10 21:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 허접
      2001.05.10 22:50
      처버 wrote: > 안녕하세요. > 프로그램의 메인 메뉴에 아이콘을 추가할 수 있는 방법을 찾고 있습니다. ...
    • 이선경
      2001.06.12 19:54
      어린왕자 wrote: > 안녕하셔요..영원한 델초보 어린왕자입니다.. > > 어쩔땐(한컴퓨터에서 컴파일해서....
    • 어린왕자
      2001.06.12 20:36
      이선경 wrote: > 어린왕자 wrote: > > 안녕하셔요..영원한 델초보 어린왕자입니다.. > > > > 어쩔땐(...
    • 타락천사
      2001.05.11 06:51
      안녕하세여..타락임다..^^ 흠. 결론부터 말하면 "그런 경우는 없다" 입니다..^^ 아마 파일이 설정된 ...
    • 어린왕자
      2001.05.11 18:34
      타락천사 wrote: > 안녕하세여..타락임다..^^ > > 흠. 결론부터 말하면 "그런 경우는 없다" 입니다..^^...
    • 이경문
      2001.05.11 22:09
      일반적으로 ini file이 CD에 있을 때 ReadOnly로 되어 있기 때문에 IniFile.Write... 에서 에러가 나게 됩...
    • 델초
    • 2001.05.10 20:31
    • 0 COMMENTS
    • /
    • 0 LIKES
    • jun2
    • 2001.05.10 20:11
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.05.10 20:47
      안녕하세요. 최용일입니다. 텍스트파일하고 TStringList하고는 별개인데요... TStringList에서 텍스트파...
    • 부탁女
      2001.05.10 23:48
      답변 감사합니다 최용일님 실은 제가 List.SaveToFile(ExtractFilePath(Application.ExeName) + 'dbkind.t...
    • 최용일
      2001.05.11 00:28
      별루 문제될건 없는거 같은데요... 아마두 아래와 같은 식으로 하신거 같은데 이러면 Access violation...
    • 부탁女
      2001.05.11 18:08
      최용일 wrote: > 별루 문제될건 없는거 같은데요... > > 아마두 아래와 같은 식으로 하신거 같은데 이...
    • delcho
    • 2001.05.10 18:47
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 허접
      2001.05.10 21:06
      delcho wrote: > 먼저의 질문에 답변을 주셔서 감사합니다. > 많은 도움이 되었습니다. > 그런데 한가지...
    • delcho
      2001.05.11 01:02
      허접 wrote: > delcho wrote: > > 먼저의 질문에 답변을 주셔서 감사합니다. > > 많은 도움이 되었습니...
    • 허접
      2001.05.11 01:34
      delcho wrote: > 허접 wrote: > > delcho wrote: > > > 먼저의 질문에 답변을 주셔서 감사합니다. > > ...
    • 다초
    • 2001.05.10 17:20
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 바람개비
      2001.05.10 19:39
      절취선까지 이동한다함은 한페이지를 올린다는 거지요? 프린터에 FF 문자를 보내면 되구요, Ejecting 역...
    • 다초
      2001.05.12 00:17
      답변 정말 감사합니다. 그런데 한가지만 더 물어보아도.... 이런경우가 있죠? 가령 사용자는 인쇄물을...
    • 유인준
      2001.05.12 19:13
      일반적으로 절취선 이동은 프린터 자체의 기능으로 알고 있습니다. 인쇄를 다하고 나서 약간의 시간이 지...
    • 김용호
    • 2001.05.10 11:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 코피
      2001.05.10 13:14
      OnSocketRead 이벤트에서 넘어오는 Socket 이라는 클레스가 요청한넘의 Connections값인걸루 아는데...
    • 코피
      2001.05.10 13:15
      아 답변 실수 해따. 저한테 멜주십시요 > > 김용호 wrote: > > TServerSocket을 이용하여 서버 프로그...
    • 최종민
    • 2001.05.10 10:28
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.05.10 20:58
      안녕하세요. 최용일입니다. 이건 말 그대로 out of bounds인데요. 님께서 어떤 리스트에다가 800개의 자...
    • 최종민
      2001.05.10 21:55
      지난번에도 이런 질문 드렸을 때 같은 대답을 해주셨는데요... 800만 그러는 게 아니고... 아무 숫자나 ...
    • 최용일
      2001.05.10 22:10
      어떤 숫자를 넣건 그 인덱스에 데이터가 없다면 마찬가지입니다... 그 데이터를 참조하기 전에 리스트의...
    • 감초
      2001.05.10 14:15
      DetailbandOnPrint에서 PrintBand := (Classfy = 1); 만 넣어주세요. 델파이끙끙 wrote: > 쿼리...
    • 델파이끙끙
      2001.05.10 20:06
      일단 답변주신 두분께 감사드립니다. 그런데 QRBand Event에는 OnPrint는 없는뎅 우짜죠? BeforePrint와 ...
    • 김양우
      2001.05.10 21:05
      DetailBand1BeforePrint에서 PrintBand := (Classfy = 1); 만 넣어주세요. 델파이끙끙 wrote: ...
    • 전형식
      2001.05.10 13:07
      안녕하세요 ^^ QuickReport의 GroupBand를 사용하면 쉽게 처리하실 수 있을겁니다. 델파이끙끙 wrote: ...