You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
6.0 KiB
C

1 month ago
#pragma once
#ifndef AFX_EXT_CLASS
#define AFX_EXT_CLASS Q_DECL_IMPORT
#endif
//#include "SplitPath.h"
namespace GBase
{
//Ϊ<><CEAA><EFBFBD>Զ<EFBFBD><D4B6>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
class AFX_EXT_CLASS CStringBuffer
{
public:
CStringBuffer(LPCTSTR strData = NULL);
virtual ~CStringBuffer();
void SetData(CString strData); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>
void AddData(CString strData); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>
void AddData(char cAdd, int nCount); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>У<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>չ'\0'<27><><EFBFBD><EFBFBD>
void AddData(char* pAdd, int nNum); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void Attach(char* pBuffer, int nLength);
char* Detach(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ڲ<EFBFBD><DAB2>ÿգ<C3BF><D5A3><EFBFBD><EFBFBD>ӵ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ҫʹ<D2AA><CAB9>deleteɾ<65><C9BE>
void Clear();
char* GetData() { return m_pData; }
int GetLength() { return m_nNum; }
operator char* (void) const { return m_pData; }
char& operator[](int idx) { return m_pData[idx]; }
char operator[](int idx) const { return m_pData[idx]; }
//<2F><><EFBFBD><EFBFBD><EFBFBD>Իس<D4BB><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>еĿ<D0B5>ʼ
int GetNextLine(CString& strLine, int nBeginIndex = 0);
CString Mid(int nBegin, int nCount = -1);
int Create(int nNum);
int AppendCreate(int nAddNum);
private:
int m_nNum;
char* m_pData;
};
//<2F><><EFBFBD><EFBFBD>CFile<6C><65>
class AFX_EXT_CLASS IOFile
{
public:
IOFile(CFile* pFile = NULL, BOOL bDelete = FALSE);
virtual ~IOFile(void);
BOOL GetStatus(CFileStatus& rStatus) const;
virtual CString GetFileName() const;
virtual CString GetFileTitle() const;
virtual CString GetFilePath() const;
virtual void SetFilePath(LPCTSTR lpszNewName);
virtual void Close(void);
#ifndef _QT_VERSION
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CAtlTransactionManager* pTM, CFileException* pError);
#else
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags);
#endif //_QT_VERSION
virtual UINT Read(void* lpBuf, UINT nCount);
virtual void Write(const void* lpBuf, UINT nCount);
virtual void SeekToBegin();
virtual ULONGLONG SeekToEnd();
virtual ULONGLONG Seek(LONGLONG lOff, UINT nFrom);
virtual ULONGLONG GetPosition();
virtual ULONGLONG GetLength();
virtual void SetLength(ULONGLONG dwNewLen);
//<2F><><EFBFBD>á<EFBFBD><C3A1><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD>ָ<EFBFBD><D6B8>
//virtual void SetFile(CFile* pFile) { m_pFile=pFile; }
virtual CFile* GetFile() { return m_pFile; }
public:
//ASCII<49><49><EFBFBD>ļ<EFBFBD><C4BC>Ķ<EFBFBD>д
int ReadString(CString& str);
int GetString(CString& str);
int ReadString(char* str, int nMaxLength); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
int GetString(char* str, int nMaxLength); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD><EFBFBD>س<EFBFBD>Ϊ<EFBFBD><CEAA>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
int ReadLine() { return ReadString(); } //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3>ڲ<EFBFBD><DAB2>Զ<EFBFBD><D4B6><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>
int ReadString(); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3>ڲ<EFBFBD><DAB2>Զ<EFBFBD><D4B6><EFBFBD>չ<EFBFBD><D5B9><EFBFBD>
int GetString(); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD><EFBFBD>س<EFBFBD>Ϊ<EFBFBD><CEAA>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char* GetTempString(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
int GetTempStringLength(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><E9B3A4>
void ZeroTempString(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
CStringBuffer& GetTempBuffer() { return m_tempBuffer; }
void WriteChar(LPCTSTR lpstr, int nTimes = 1); //д<><D0B4>nTimes<65><73><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void WriteLine(LPCTSTR lpstr, int nTabNum); //<2F><><EFBFBD><EFBFBD>nTabNum<75><6D>tab<61><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void WriteLine(CString str); //дһ<D0B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD>),<2C><>WriteString<6E><67>WriteReturn<72><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void WriteString(CString str, int nTabNum = 0); //дһ<D0B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void WriteString(double value, int n = 6); //дһ<D0B4><D2BB>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void WriteString(long value); //дһ<D0B4><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void WriteReturn(); //дһ<D0B4><D2BB><EFBFBD>س<EFBFBD>
void WriteXY(double x, double y, char cSplit = ','); //дX,Y<><59><EFBFBD><EFBFBD>
int ReadXY(double& x, double& y, char cSplit = ',');
void WriteXY(double x, double y, double z, char cSplit = ',');
int ReadXY(double& x, double& y, double& z, char cSplit = ',');
void WriteArray(int num, double* pValue, char cSplit = ' ');
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>У<EFBFBD><D0A3>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>ȱʡ<C8B1>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void PrintXYZ(char* string, double *v, int num, int digits, char split = ',');
void PrintXYZ(CString& result, double *v, int num, int digits, char split = ',');
void PrintXYZ(char* result, double *v, int num, char split = ',');
void PrintXYZ(CString& result, double *v, int num, char split = ',');
//<2F><><EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL WriteFile(LPCTSTR lpSaveFileName, void* pBuffer, DWORD nBufferSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dfb<66>ļ<EFBFBD><C4BC><EFBFBD>д
void SerializeString(CArchive& ar, CString& str, const short& ver);
void WriteElementType(CArchive& ar, int nType, const short& ver); //дԪ<D0B4><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(int <20><> short)<29><>
void ReadElementType(CArchive& ar, int &nType, const short& ver); //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(int <20><> short)<29><>
////<2F><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
//int DFD_WriteMemoryBlock(CDFile& fw, BYTE* lpData, DWORD nDataLength, LPCTSTR strType);
//BYTE* DFD_ReadMemoryBlock(CDFile& fr, DWORD& nOutDataLength, CString& strType);
////xml<6D><6C>ʽд
//void WriteDML(CRect8& rect,int nTabNum, CString key=_T(""));
//void WriteDML_Head_Version();
//void WriteDML_Head_Xmlns();
//void WriteDML_Head_MapType(int nTabNum, CString strMapType);
//void WriteDML_Tail_MapType(int nTabNum, CString strMapType);
//void WriteDML_Tail(short ver);
//void WritePCG(const CRect8& rect,int nTabNum, CString key=_T(""));
//void WritePCG_Head_Version();
//void WritePCG_Head_Xmlns();
//void WritePCG_Head_MapType(int nTabNum, CString strMapType);
//void WritePCG_Tail_MapType(int nTabNum, CString strMapType);
//void WritePCG_Tail(short ver);
//<2F><><EFBFBD><EFBFBD>
void ConvertGBKToUTF8(CString& strGBK, bool checkCodec = true);
void SetCodeType(DWORD nType);
DWORD GetCodeType();
//xml<6D><6C>ʽ<EFBFBD><EFBFBD><E6B1BE>
void SetXmlVersion(double dVer);
double GetXmlVersion();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
void SetErrorInfo(LPCTSTR lpszErrorInfo);
CString GetErrorInfo(void);
enum ECodeType
{
codeGB2312 = 0x00000000, //gb2312<31><32><EFBFBD><EFBFBD><EBA3AC>CODE_GB2312<31><32>ͬ
codeUTF8 = 0x00000001 //utf-8<><38><EFBFBD><EFBFBD><EBA3AC>CODE_UTF8<46><38>ͬ
};
protected:
CFile* m_pFile;
BOOL m_bDelete; //<2F>Ƿ<EFBFBD>ɾ<EFBFBD><C9BE>m_pFile
double m_dXmlVersion; //<2F><EFBFBD><E6B1BE>
DWORD m_nCodeType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString m_strErrorInfo; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>Ϣ
//Ϊ<><CEAA><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ȵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><E4B3A4>
CStringBuffer m_tempBuffer; //ÿ<><C3BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>, <20><>ʼ<EFBFBD><CABC>Ϊ2048<34><38>
};
};
using namespace GBase;