KTabFileCtrl.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:5k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef __KTABFILECTRL_H__
  2. #define __KTABFILECTRL_H__
  3. #include "KEngine.h"
  4. #include "KNode.h"
  5. #include "KITabFile.h"
  6. class TTabColNode: public KNode
  7. {
  8. public :
  9. char * m_Str;
  10. ~TTabColNode(){ delete m_Str;};
  11. };
  12. class TTabLineNode: public KNode
  13. {
  14. public:
  15. KList * pList;
  16. ~TTabLineNode()
  17. {
  18. while(pList->GetHead())
  19. {
  20. TTabColNode * pDelNode = (TTabColNode*) pList->GetHead();
  21. pList->RemoveHead();
  22. delete pDelNode;
  23. }
  24. };
  25. };
  26. class ENGINE_API KTabFileCtrl:public KITabFile
  27. {
  28. private:
  29. BOOL SetValue(int nRow, int nColumn, LPSTR lpRString, DWORD dwSize, BOOL bCanCreateNew = TRUE);
  30. BOOL GetValue(int nRow, int nColumn, LPSTR& lpRString, DWORD dwSize);
  31. BOOL GetValue(LPSTR RowName, LPSTR ColumnName, LPSTR szValue, DWORD dwSize)
  32. {return GetValue(FindRow(RowName),FindColumn(ColumnName), szValue, dwSize);};
  33. int Str2Col(LPSTR);
  34. public:
  35. KTabFileCtrl();
  36. ~KTabFileCtrl();
  37. KList m_RowList;
  38. BOOL Load(LPSTR FileName);//加载文件
  39. BOOL Save(LPSTR FileName);//保存文件
  40. BOOL LoadPack(LPSTR FileName);
  41. int FindRow(LPSTR szRow);//返回以1为起点的值
  42. int FindColumn(LPSTR szColumn);//返回以1为起点的值
  43. LPSTR GetRowName(int nRow);
  44. LPSTR GetColName(int nCol);
  45. int InsertNewCol(LPSTR strNewCol);//返回新生成的Col编号,错误则返回-1
  46. BOOL InsertAfter(int nRow);
  47. BOOL InsertAfter(LPSTR szRow, BOOL bColumnLab = TRUE)
  48. {
  49. if (!bColumnLab)
  50. return InsertAfter(Str2Col(szRow));
  51. else
  52. return InsertAfter(FindRow(szRow));
  53. }
  54. BOOL InsertBefore(int nRow);
  55. BOOL InsertBefore(LPSTR szRow, BOOL bColumnLab = TRUE)
  56. {
  57. if (!bColumnLab)
  58. return InsertBefore(Str2Col(szRow));
  59. else
  60. return InsertBefore(FindRow(szRow));
  61. }
  62. int GetWidth()//获得第一行的宽度
  63. {
  64. TTabLineNode * pLineNode = (TTabLineNode*)m_RowList.GetHead();
  65. if (!pLineNode) return 0;
  66. return pLineNode->pList->GetNodeCount();
  67. };
  68. int GetHeight() { return m_RowList.GetNodeCount();};//获得总长度
  69. BOOL GetString(int nRow, int nColumn, LPSTR lpDefault, LPSTR lpRString, DWORD dwSize);
  70. BOOL GetString(int nRow, LPSTR szColumn, LPSTR lpDefault, LPSTR lpRString, DWORD dwSize, BOOL bColumnLab = TRUE)
  71. {
  72. if (!bColumnLab) //该段以exl文件的a1,b1,c1字符串为
  73. return GetString(nRow, Str2Col(szColumn), lpDefault, lpRString, dwSize);
  74. else
  75. return GetString(nRow, FindColumn(szColumn), lpDefault, lpRString, dwSize);
  76. };
  77. BOOL GetString(LPSTR szRow, LPSTR szColumn, LPSTR lpDefault, LPSTR lpRString, DWORD dwSize)
  78. { return GetString(FindRow(szRow), FindColumn(szColumn), lpDefault, lpRString, dwSize); };
  79. BOOL GetInteger(int nRow, int nColumn, int nDefault, int *pnValue);
  80. BOOL GetInteger(int nRow, LPSTR szColumn, int nDefault, int *pnValue, BOOL bColumnLab = TRUE)
  81. { if (!bColumnLab)
  82. return GetInteger( nRow, Str2Col(szColumn), nDefault, pnValue);
  83. else
  84. return GetInteger( nRow, FindColumn(szColumn), nDefault, pnValue);
  85. };
  86. BOOL GetInteger(LPSTR szRow, LPSTR szColumn, int nDefault, int *pnValue)
  87. {
  88. return GetInteger(FindRow(szRow), FindColumn(szColumn), nDefault, pnValue);
  89. }
  90. BOOL GetFloat(int nRow, int nColumn, float fDefault, float *pfValue);
  91. BOOL GetFloat(int nRow, LPSTR szColumn, float fDefault, float *pfValue, BOOL bColumnLab = TRUE)
  92. {
  93. if (!bColumnLab)
  94. return GetFloat( nRow, Str2Col(szColumn), fDefault, pfValue);
  95. else
  96. return GetFloat( nRow, FindColumn(szColumn), fDefault, pfValue);
  97. };
  98. BOOL GetFloat(LPSTR szRow, LPSTR szColumn, float fDefault, float *pfValue)
  99. {
  100. return GetFloat( FindRow(szRow), FindColumn(szColumn), fDefault, pfValue);
  101. }
  102. BOOL WriteString(int nRow, int nColumn,  LPSTR lpString,  DWORD dwSize = 0);
  103. BOOL WriteString(int nRow, LPSTR szColumn, LPSTR lpString,  BOOL bColumnLab = TRUE)
  104. {
  105. if (!bColumnLab) //该段以exl文件的a1,b1,c1字符串为
  106. return WriteString(nRow, Str2Col(szColumn), lpString);
  107. else
  108. return WriteString(nRow, FindColumn(szColumn), lpString);
  109. };
  110. BOOL WriteString(LPSTR szRow, LPSTR szColumn,  LPSTR lpRString)
  111. { return WriteString(FindRow(szRow), FindColumn(szColumn), lpRString); };
  112. BOOL WriteInteger(int nRow, int nColumn, int nValue);
  113. BOOL WriteInteger(int nRow, LPSTR szColumn, int nValue, BOOL bColumnLab = TRUE)
  114. { if (!bColumnLab)
  115. return WriteInteger( nRow, Str2Col(szColumn),  nValue);
  116. else
  117. return WriteInteger( nRow, FindColumn(szColumn), nValue);
  118. };
  119. BOOL WriteInteger(LPSTR szRow, LPSTR szColumn, int nValue)
  120. {
  121. return WriteInteger(FindRow(szRow), FindColumn(szColumn), nValue);
  122. }
  123. BOOL WriteFloat(int nRow, int nColumn,float fValue);
  124. BOOL WriteFloat(int nRow, LPSTR szColumn, float fValue, BOOL bColumnLab = TRUE)
  125. {
  126. if (!bColumnLab)
  127. return WriteFloat( nRow, Str2Col(szColumn), fValue);
  128. else
  129. return WriteFloat( nRow, FindColumn(szColumn), fValue);
  130. };
  131. BOOL WriteFloat(LPSTR szRow, LPSTR szColumn,  float fValue)
  132. {
  133. return WriteFloat( FindRow(szRow), FindColumn(szColumn), fValue);
  134. }
  135. BOOL Remove(int nRow);
  136. BOOL Remove(LPSTR szRow, BOOL bColumnLab = TRUE)
  137. {
  138. if (!bColumnLab)
  139. return Remove(Str2Col(szRow));
  140. else 
  141. return Remove(FindRow(szRow));
  142. };
  143. void Clear();
  144. };
  145. #endif //__KTABFILECTRL_H__