#pragma once class CStringRawItem { public: CStringRawItem() { m_pstrName = NULL; m_nNameLen = 0; m_bIsEnd = FALSE; } ~CStringRawItem() { if (m_pstrName) delete [] m_pstrName; m_pstrName = NULL; m_nNameLen = 0; } void ResetString() { if (!m_pstrName || m_nNameLen < 1) return; for (int i = 0; i < m_nNameLen-1; i++) m_pstrName[i] = 0x20; m_pstrName[m_nNameLen-1] = NULL; //m_pstrName[0] = '*'; } BOOL SetLength(int nLen) { m_nNameLen = nLen + 1; if (m_pstrName) delete [] m_pstrName; m_pstrName = new char[m_nNameLen]; ResetString(); return TRUE; } int GetLength() { if (!m_pstrName) return -1; return m_nNameLen-1; } BOOL SetName(char* strName) { SetLength((int)strlen(strName)); if (!m_pstrName) return FALSE; for (int i = 0; i < (int)strlen(strName); i++) { if(strName[i] == 0x20) //" " m_pstrName[i] = 0x5f; //"_" else m_pstrName[i] = strName[i]; } return TRUE; } char* GetName() { return m_pstrName; } BOOL WriteToFileName(FILE *fp) { if (!fp || !m_pstrName) return FALSE; fprintf(fp, "%s", m_pstrName); return TRUE; } protected: char* m_pstrName; int m_nNameLen; BOOL m_bIsEnd; }; class CStringRawData { public: CStringRawData() { m_pstrData = NULL; m_nDataLen = 0; } CStringRawData(const CStringRawData& rhs) { m_pstrData = NULL; m_nDataLen = 0; if (this != &rhs) { SetLength(rhs.m_nDataLen-1); strcpy_s(m_pstrData,rhs.m_nDataLen, rhs.m_pstrData); } } ~CStringRawData() { if (m_pstrData) delete [] m_pstrData; m_pstrData = NULL; m_nDataLen = 0; } CStringRawData& operator=(const CStringRawData& rhs) { if (this != &rhs) { SetLength(rhs.m_nDataLen-1); strcpy_s(m_pstrData,rhs.m_nDataLen, rhs.m_pstrData); } return *this; } void ResetString() { if (!m_pstrData || m_nDataLen < 1) return; for (int i = 0; i < m_nDataLen - 1; i++) m_pstrData[i] = 0x20; m_pstrData[m_nDataLen - 1] = NULL; } BOOL SetLength(int nLen) { m_nDataLen = nLen + 1; if (m_pstrData) delete [] m_pstrData; m_pstrData = new char[m_nDataLen]; ResetString(); return TRUE; } BOOL SetData(char* strData) { if (!m_pstrData) return FALSE; int nLen = (int) strlen(strData); if (nLen >= m_nDataLen) { m_pstrData[0] = ' '; return FALSE; } for (int i = 0; i < (int)strlen(strData); i++) m_pstrData[i] = strData[i]; return TRUE; } BOOL SetData(int nData) { if (!m_pstrData) return FALSE; char str[14] = {0, }; sprintf_s(str, "%d", nData); if ((int)strlen(str) >= m_nDataLen) { for (int i = 0; i < m_nDataLen-1; i++) m_pstrData[i] = '9'; return FALSE; } for (int i = 0; i < (int)strlen(str); i++) m_pstrData[i] = str[i]; return TRUE; } BOOL SetData(double dData) { if (!m_pstrData) return FALSE; char str[14] = {0, }; sprintf_s(str, "%2.3f", dData); if ((int)strlen(str) >= m_nDataLen) { for (int i = 0; i < m_nDataLen-1; i++) m_pstrData[i] = '9'; return FALSE; } for (int i = 0; i < (int)strlen(str); i++) m_pstrData[i] = str[i]; return TRUE; } char* GetData() { return m_pstrData; } int GetLength() { return m_nDataLen; } BOOL WriteToFileData(FILE *fp) { if (!fp || !m_pstrData || m_nDataLen == 0) return FALSE; fprintf_s(fp, "%s", m_pstrData); return TRUE; } BOOL WriteToFileData(CFile &fp) { if (!m_pstrData || m_nDataLen == 0) return FALSE; fp.Write(m_pstrData, m_nDataLen-1); return TRUE; } protected: char* m_pstrData; int m_nDataLen; }; struct SRawFile { SRawFile() { Reset(); } void Reset() { dWriteTime = 0.0; strFileName = _T(""); } double dWriteTime; CString strFileName; }; typedef std::vector VectorSRawFile; typedef std::vector::iterator VectorSRawFileIt;