C# 操作INI文件类 (eGlic原创)[4]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

  private string __Path;
  /// <summary>
  /// 所有的配置节
  /// </summary>
  public INISegments Segments;
  /// <summary>
  /// 构造函数
  /// </summary>
  /// <param name="vPath">INI文件路径</param>
  public INIFile(string vPath)
  {
   __Path=vPath;
   Segments=new INISegments(this);
   byte [] bufsegs=new byte [32767];
   int rel=GetPrivateProfileSectionNamesA(bufsegs,32767,__Path);
   int iCnt,iPos;
   string tmp;
   if(rel>0)
   {
    iCnt=0;iPos=0;
    for(iCnt=0;iCnt<rel;iCnt++)
    {
     if(bufsegs[iCnt]==0x00)
     {
      tmp=System.Text.ASCIIEncoding.Default.GetString(bufsegs,iPos,iCnt).Trim();
      iPos=iCnt+1;
      if(tmp!="")
       Segments.Add(tmp);
     }
    }
   }
  }
  /// <summary>
  /// 获取INI文件路径
  /// </summary>
  public string Path
  {
   get {return __Path;}
  }
  /// <summary>
  /// 读取一个整数型的配置值
  /// </summary>
  /// <param name="segName">配置节名</param>
  /// <param name="keyName">配置项名</param>
  /// <param name="iDefault">默认值</param>
  /// <returns>配置值</returns>
  public int GetInt(string segName,string keyName,int iDefault)
  {
   return GetPrivateProfileIntA(segName,keyName,iDefault,__Path);
  }
  
  /// <summary>
  /// 读取一个字符串型配置值
  /// </summary>
  /// <param name="segName">配置节名</param>
  /// <param name="keyName">配置项名</param>
  /// <param name="sDefault">默认值</param>
  /// <returns>配置值</returns>
  public string GetString(string segName,string keyName,string sDefault)
  {
   StringBuilder red=new StringBuilder(1024);
   GetPrivateProfileStringA(segName,keyName,"",red,1024,__Path);
   return red.ToString();
  }
  
  /// <summary>
  /// 写入配置项
  /// </summary>
  /// <param name="segName">配置节名</param>
  /// <param name="keyName">配置项名</param>
  /// <param name="vValue">配置值</param>
  public void SetString(string segName,string keyName,string vValue)
  {
   WritePrivateProfileStringA(segName,keyName,vValue,__Path);
  }
  /// <summary>
  /// 写入一个配置节
  /// </summary>
  /// <param name="segName">配置节名</param>
  /// <param name="vData">数据</param>
  /// <remarks>
  /// 数据为多个配置项组成的字符串,每个配置项之间用 "\0" 分割
  /// 字符串最后用 "\0\0" 结束
  /// </remarks>
  /// <example>
  /// WriteSegment(segName,"\0\0"); 可以用于清除一个配置节下的所有配置项
  /// </example>
  public void WriteSegment(string segName,string vData)
  {
   WritePrivateProfileSectionA(segName,System.Text.ASCIIEncoding.Default.GetBytes(vData),__Path);
  }
  /// <summary>
  /// 读取一个配置节下面的所有配置项
  /// </summary>
  /// <param name="o">要读取的配置节</param>
  public void GetSegment(INISegment o)
  {
   byte [] vData=new byte [32767];
   int rLen=GetPrivateProfileSectionA(o.Name,vData,32767,__Path);
   o.Items.Clear();
   if(rLen<1) return;
   string tmp="";
   int iPos,iCnt;
   iPos=0;
   for(iCnt=0;iCnt<rLen;iCnt++)
   {

本文关键:C# 操作INI文件类 (eGlic原创)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top