Feeds:
文章
留言

Archive for 十二月 6th, 2005

[C#]ini 讀取類別

利用 win32 api 實作一個簡單的 ini 讀寫器
 

// CIni.cs

/*
 * INI 讀取類別
 *
 * 使用 win32 api 實作
 *
 * 設計者:Chui-Wen Chiu(Arick)
 *
 * 開發日誌:
 * 2005.12.07 建立
 */
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

namespace ChuiWenChiu {
 /// <summary>
 /// CIni 的摘要描述。
 /// </summary>
 public class CIni {
  public string _filename;

  [DllImport("kernel32")]
  private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
  [DllImport("kernel32")]
  private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);

  public CIni(string path) {
   Filename = path;
  }

  public string Filename{
   get{
    return _filename;
   }

   set{
    FileInfo fi = new FileInfo(value);
    if (fi.Exists==false){
     throw(new Exception("File Not Exist"));
    }
    _filename = value;
   }
  }
  // 寫入
  public void WriteValue(string Section,string Key,string Value) {
   WritePrivateProfileString(Section,Key,Value,this._filename);
  }

  //讀取
  public string ReadValue(string Section, string Key) {
   StringBuilder temp = new StringBuilder(255);
   int i = GetPrivateProfileString(Section, Key, "", temp, 255, this._filename);
   return temp.ToString();
  }
 }
}

// Class1.cs

using System;
using ChuiWenChiu;
namespace CSharp
{
 /// <summary>
 /// Class1 的摘要描述。
 /// </summary>
 class Class1
 {
  /// <summary>
  /// 應用程式的主進入點。
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   CIni obj = new CIni(@"c:winntTSC2.ini");
   string val = obj.ReadValue("message", "Reboot");
   Console.WriteLine(val);

  }
 }
}
 

Read Full Post »

Read Full Post »