//////////////////////////////////////////////////////////////// // Technomaint 2004 (c) SofTech di Germinara Francesco 2000,2004 // www.germinara.it info@germinara.it // Story: // //////////////////////////////////////////////////////////////// // Checked Version: 6/5/2004 //////////////////////////////////////////////////////////////// #ifndef CLASS_CFGRecord_INCLUDED #define CLASS_CFGRecord_INCLUDED #include"CFGField.h" #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define _FPMAXRECLEN 2048 #define _FPMAXFIELDS 300 class CFGRecord{ protected: char m_recBuffer[_FPMAXRECLEN]; //Row Buffer int m_nIndex; //Effective number of fields virtual void InitializeFields(); //Fields Inizialitation void ResetRecordBuffer();//Ripulisco Buffer Temporaneo private: void BuildFieldsData(); //Builds Data Fields from row data buffer record void BuildRowData(); //Fill RowData public: CFGRecord(); //Standard constructor char * GetDirectBuffer(){return m_recBuffer;}; void SetDirectBuffer(char * buffer){memcpy(m_recBuffer,buffer,_FPMAXRECLEN-1); BuildFieldsData();}; //Direct Access to Fields Class CFGField m_fld[_FPMAXFIELDS]; enum eFGTypeFields{eFieldTypeAlfaNumeric=0,eFieldTypeNumeric=1}; //Type Field Enum //Helper int GetCount(); //Return number of fields int SearchField(CString strName); //Search Fields Index by Name int GetRecordSize(); //Return Record Length //Data Serialization void WriteData(CStdioFile& idFile); //Write Data To File BOOL ReadData(CStdioFile& idFile); //Read Data From File //Standard Access To Fields Objects CString GetStringValueFromFieldName(CString strName); //Read String Data by Name CString GetStringValueFromField(int nIndex); //Read String Data by Index double GetNumericValueFromFieldName(CString strName); //Read Numeric Data by Name double GetNumericValueFromField(int nIndex); //Read Numeric Data by Index CString StrGetNumericValueFromField(int nIndex); //Read Numeric Data by Index and return it as a string CString StrGetNumericValueFromFieldName(CString strName); //Read Numeric Data by Name and return it as a string int GetFieldTypeByName(CString strName); //Return Type Of fields int GetFieldTypeByIndex(int nIndex); //Return Type Of fields void SetStringValueToFieldName(CString strName,CString strValue); //Set String Data by Field Name void SetNumericValueToFieldName(CString strName,double dValue); //Set Numeric Data by Field Name CString GetFieldDescrByName(CString strName); //Return Field Description by Name CString GetFieldDescrByIndex(int nIndex);//Return Field Description by Index CString GetFieldNameByIndex(int nIndex); //Return Field Name by Index }; #endif //Fine