IniFile.cpp
上传用户:yffx2008
上传日期:2014-10-12
资源大小:12414k
文件大小:4k
源码类别:

交通/航空行业

开发平台:

Visual C++

  1. // IniFile.cpp: implementation of the CIniFile class.
  2. //////////////////////////////////////////////////////////////////////
  3. #include "stdafx.h"
  4. #include "IniFile.h"
  5. #include "fstream.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. /////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. /////////////////////////////////////////////////////////////////////
  14. //default constructor
  15. CIniFile::CIniFile()
  16. {
  17. }
  18. //default destructor
  19. CIniFile::~CIniFile()
  20. {
  21. }
  22. /////////////////////////////////////////////////////////////////////
  23. // Public Functions
  24. /////////////////////////////////////////////////////////////////////
  25. //sets path of ini file to read and write from
  26. void CIniFile::SetPath(CString Path)
  27. {
  28. FilePath = Path;
  29. }
  30. //open ini file for read
  31. BOOL CIniFile::OpenIniFileForRead()
  32. {
  33. BOOL bExist=IniFile.Open(FilePath+FileName,CFile::modeRead); 
  34. return bExist;
  35. }
  36. //open ini file for write
  37. BOOL CIniFile::OpenIniFileForWrite()
  38. {
  39. BOOL bExist=IniFile.Open(FilePath+FileName,CFile::modeCreate | CFile::modeWrite);
  40. return bExist;
  41. }
  42. void CIniFile::CloseIniFile()
  43. {
  44. IniFile.Close();
  45. }
  46. //find Section in ini file
  47. BOOL CIniFile::FindSection(CString Section)
  48. {
  49. IniFile.SeekToBegin();
  50. CString str;
  51. BOOL bFind=FALSE;
  52. BOOL bEnd=IniFile.ReadString(str);
  53. while(!bFind && bEnd)
  54. {
  55. if(str.Find(Section)>=0)
  56. {
  57. bFind=TRUE;
  58. break;
  59. }
  60. bEnd=IniFile.ReadString(str);
  61. }
  62. return bFind;
  63. }
  64. //write Section to ini file
  65. BOOL CIniFile::WriteSection(CString Section)
  66. {
  67. CFileStatus status;
  68. if(IniFile.GetStatus(status))
  69. {
  70. IniFile.WriteString("["+Section+"]n");
  71. return TRUE;
  72. }
  73. else
  74. return FALSE;
  75. }
  76. //write Item and value of int to ini file
  77. BOOL CIniFile::WriteItemInt(CString Item, int Value)
  78. {
  79. CFileStatus status;
  80. if(IniFile.GetStatus(status))
  81. {
  82. CString str;
  83. str.Format("%d",Value);
  84. str=Item+"="+str+"n";
  85. IniFile.WriteString(str);
  86. return TRUE;
  87. }
  88. else
  89. return FALSE;
  90. }
  91. //write Item and value of CString to ini file
  92. BOOL CIniFile::WriteItemString(CString Item, CString Value)
  93. {
  94. CFileStatus status;
  95. if(IniFile.GetStatus(status))
  96. {
  97. IniFile.WriteString(Item+"="+Value+"n");
  98. return TRUE;
  99. }
  100. else
  101. return FALSE;
  102. }
  103. //read value of int from ini file
  104. BOOL CIniFile::GetItemInt(CString Section, CString Item, int &Value)
  105. {
  106. CFileStatus status;
  107. if(IniFile.GetStatus(status))
  108. {
  109. if(FindSection(Section))
  110. {
  111. CString buf,sub;
  112. BOOL bFind=FALSE;
  113. BOOL bEnd=IniFile.ReadString(buf);
  114. while(!bFind && bEnd)
  115. {
  116. sub=buf.Left(buf.Find("="));
  117. if(buf.Find("[")<0 && !sub.IsEmpty() && sub.Find(Item)>=0)
  118. {
  119. sub=buf.Right(buf.GetLength()-buf.Find("=")-1);
  120. sub=GetValueString(sub);
  121. Value=atoi(sub);
  122. bFind=TRUE;
  123. break;
  124. }
  125. bEnd=IniFile.ReadString(buf);
  126. }
  127. return bFind;
  128. }
  129. else
  130. return FALSE;
  131. }
  132. else
  133. return FALSE;
  134. }
  135. //read value of CString from ini file
  136. BOOL CIniFile::GetItemString(CString Section, CString Item, CString &Value)
  137. {
  138. CFileStatus status;
  139. if(IniFile.GetStatus(status))
  140. {
  141. if(FindSection(Section))
  142. {
  143. CString buf,sub;
  144. BOOL bFind=FALSE;
  145. BOOL bEnd=IniFile.ReadString(buf);
  146. while(!bFind && bEnd)
  147. {
  148. sub=buf.Left(buf.Find("="));
  149. if(buf.Find("[")<0 && !sub.IsEmpty() && sub.Find(Item)>=0)
  150. {
  151. sub=buf.Right(buf.GetLength()-buf.Find("=")-1);
  152. Value=GetValueString(sub);
  153. bFind=TRUE;
  154. break;
  155. }
  156. bEnd=IniFile.ReadString(buf);
  157. }
  158. return bFind;
  159. }
  160. else
  161. return FALSE;
  162. }
  163. else
  164. return FALSE;
  165. }
  166. //get value(CString) from str
  167. CString CIniFile::GetValueString(CString str)
  168. {
  169. int length=str.GetLength();
  170. BOOL bSpace=TRUE;
  171. while(length && bSpace)
  172. {
  173. if(str[0]==' ')
  174. str=str.Right(--length);
  175. else
  176. bSpace=FALSE;
  177. }
  178. bSpace=TRUE;
  179. while(length && bSpace)
  180. {
  181. if(str[length-1]==' ')
  182. str=str.Left(--length);
  183. else
  184. bSpace=FALSE;
  185. }
  186. return str;
  187. }
  188. //write any string to ini file,"n"
  189. BOOL CIniFile::WriteString(CString str)
  190. {
  191. CFileStatus status;
  192. if(IniFile.GetStatus(status))
  193. {
  194. IniFile.WriteString(str);
  195. return TRUE;
  196. }
  197. else
  198. return FALSE;
  199. }
  200. //sets name of ini file to read and write from
  201. void CIniFile::SetName(CString Name)
  202. {
  203. FileName=Name+".ini";
  204. }