|
엘카 님이 쓰신 글 :
: 답변을 보고 for문을 수정해 보았습니다.
:
: for(int i = 0; i<StringGrid1->RowCount; i++)
: {
: str = StringGrid1->Cells[12][i+1];
: X = str.ToDouble();
: str = StringGrid1->Cells[13][i+1];
: Y = str.ToDouble();
:
: Series1->Add(X, Y);
: }
:
: 역시 에러창이 아래와 같이 나타납니다.
:
: Project MainProject.exe raised exception class EConvertError with message ''' is not a valid floating point value'. Process stopped. Use Step or Run to continue.
:
: 언뜻 보기에 X = str.ToDouble(); 라인이 문제인거 같습니다.
: StringGrid의 내용이 문자라 차트로 나타내기 위해서는 숫자로 표현하기 위해 저렇게 형변환을 했는데
: 여기에 문제가 있었을까요??
:
:
:
: smleelms 님이 쓰신 글 :
: : 일단 에러내용으로 봐서는 dataset이 닫혀서 RecordCount를 얻을 수 없다고 나오네요..
: :
: : 그래서 컴파일 오류는 없어도 실행오류가 발생하는 것 같습니다.
: :
: : 그래프에 데이터를 뿌리기전에 dataset이나 query를 Close() 하신것 아닌가 싶네요.
: :
: : 그리고 for문의 카운터는 쿼리의 레코드를 읽어서 하시는데, 데이터는 StringGrid에서 읽어오시네요.
: :
: : DB면 DB, 아니면 StringGrid의 RowCount를 얻어서 사용하시는게 맞을것 같습니다.
: :
: : 엘카 님이 쓰신 글 :
: : : 데이터베이스를 읽어들여서 StringGrid에 나타내고 나타낸 값을 TChart에 표시하려고 합니다.
: : :
: : : 그런데 잘 되지가 않아서 질문을 드립니다.
: : :
: : : -------------------------------------------------------
: : : AnsiString str;
: : : double X, Y;
: : :
: : : for(int i=0; i<dblinerquery->RecordCount; i++)
: : : {
: : : str = StringGrid1->Cells[12][i+1];
: : : X = str.ToDouble();
: : : str = StringGrid1->Cells[13][i+1];
: : : Y = str.ToDouble();
: : :
: : : Series1->Add(X, Y);
: : : }
: : : -------------------------------------------------------
: : :
: : : StringGrid의 내용이 문자로 지정되어 있어서 AnsiString str에 저장하여 실수형 double로 변환시켰습니다.
: : :
: : : 그리고 TChart에 집어넣었는데 컴파일 에러는 나지 않습니다만 실행하여 버튼을 클릭하면 아래의 에러창이 뜹니다.
: : :
: : : Project MainProject.exe raised exception class EDatabaseError with message 'dblinerquery: Cannot perform this operation on a closed dataset'. Process stopped. Use Step or Run to continue.
: : :
: : : 어디가 문제인가요??
str.ToDouble() 라인자체는 문제가 없지만 예외처리가 안되어서 발생하는거죠
에러메시지는 공백을 double형으로 변경하려해서 생긴 문제입니다.
|