오후에 디버깅 중에 답을 찾았습니다. 물론 저의 잘못 이었습니다.
파일로 부터 읽어 들인 데이터 내용을 차트로 보여 주기 위해 Series를 생성하고
ClientDataSet을 참조하도록 하는 코드가 있어서 나는 Error였습니다.
그래서 새로운 파일을 열기전에 기존의 Series를 제거해 주는 루틴을 추가 했더니 Error가 안나네요..^^
우선 이렇게 해결해 놓고 좀더 세부적으로 원인을 알아내면 또 달겠습니다. ^^;;
var
Loop : integer
begin
For Loop := 0 to MAX_SERIES do begin //-- 추가된 코드 start
Series[Loop].Free;
Series[Loop] := nil;
end; //-- 추가된 코드 end
ClientDataSet1.LoadFromFile( XMLFileName );
for Loop := 0 to CD1.FieldCount-1 do begin
Series[Loop] := TLineSeries.Create( Self );
Series[Loop].ParentChart := DBC1;
Series[Loop].DataSource := ClientDataSet1;
Series[Loop].XLabelsSource := 'Time';
Series[Loop].XValues.ValueSource := 'Time';
Series[Loop].YValues.ValueSource := ClientDataSet1.FieldDefs[Loop].Name;
Series[Loop].SeriesColor := RGB( random(255),random(255),random(255) );
Series[Loop].CheckDataSource;
end;
end;
>ClientDataSet을 이용하여 XML 파일을 읽는 부분을 구현하다가 오류가 발생하여 도움을 요청하고 합니다.
>
>A.XML 과 B.XML은 모두 ClientDataSet1.SaveToFile 함수를 이용하여 만들어진 파일 입니다.
>
>그런데 두 파일의 필드는 다르게 구성 되어 있습니다.
>
>프로그램에서 ClientDataSet1.LoadFromFile을 이용하여 이 파일을 Load 하게 되면
>
>처음에 한개는 잘 읽습니다만 다른 하나를 읽기 위해 시도하면
>
>" ClientDataSet1 : Field1 not found "라는 error message가 뜨면서 Load를 하지 못합니다.
>
>기존에 파일로 부터 읽어들인 필드 정보가 남아 있어서 그러는것 같은데
>
>ClientDataSet1.ClearFields 라는 함수를 써봤습니다만 똑같습니다.
>
>어떻게 해결 해야 하는지 도움좀 주시면 감사하겠습니다.
>