//--------------------------------------------------------------------------- #include "system.hpp" #include "classes.hpp" #pragma hdrstop #include "Curve.h" __fastcall TCurve::TCurve() { Values= NULL; iNumValues= 0; iNumCols= 0; } __fastcall TCurve::~TCurve() { for (int i=0; i=iNumValues) return Values[iNumValues-1][c]; p-= floor(p); return Values[a][c]*(1.0f-p)+Values[b][c]*(p); } bool __fastcall TCurve::SetValue(int c, float p, float v) { int a= floor(p); int b= ceil(p); if (a<0) return false; if (b>=iNumValues) return false; p-= floor(p); if (p<0.5) Values[a][c]= v; else Values[b][c]= v; return true; } bool __fastcall TCurve::Load(TQueryParserComp *Parser) { DecimalSeparator= '.'; AnsiString Token; int n= Parser->GetNextSymbol().ToInt(); int c= Parser->GetNextSymbol().ToInt(); Init(n,c); n=0; int i; while (!Parser->EOF && nGetNextSymbol().ToDouble(); n++; } DecimalSeparator= ','; } bool __fastcall TCurve::LoadFromFile(AnsiString asName) { DecimalSeparator= '.'; TFileStream *fs; fs= new TFileStream(asName, fmOpenRead | fmShareCompat ); AnsiString str= "xxx"; int size= fs->Size; str.SetLength(size); fs->Read(str.c_str(),size); str+= ""; delete fs; TQueryParserComp *Parser; Parser= new TQueryParserComp(NULL); Parser->TextToParse= str; Parser->First(); Load(Parser); delete Parser; DecimalSeparator= ','; } #include bool __fastcall TCurve::SaveToFile(AnsiString asName) { DecimalSeparator= '.'; FILE *stream=NULL; stream = fopen(asName.c_str(), "w"); AnsiString str; str= AnsiString(iNumValues); fprintf(stream, str.c_str()); fprintf(stream, "\n"); for (int i=0; i