C 讀取ini配置檔案

2021-07-09 04:44:38 字數 3259 閱讀 3742

雖然微軟早已經建議在windows中用登錄檔代替ini檔案,但是在實際應用中,ini檔案仍然有用武之地,尤其現在綠色軟體的流行,越來越多的程式將自己的一些配置資訊儲存到了ini檔案中。

[section]

key=value

vc中提供了api函式進行ini檔案的讀寫操作,但是微軟推出的c#程式語言中卻沒有相應的方法,下面我介紹乙個讀寫ini檔案的c#類並利用該類儲存窗體的座標,當程式再次執行的時候,窗體將顯示在上次退出時的位置。

inifile類:

using system;

using system.io;

using system.runtime.interopservices;

因為我們需要呼叫api函式,所以必須建立system.runtime.interopservices命名空間以提供可用於訪問 .net 中的 com 物件和本機 api 的類的集合。

[c-sharp]view plain

copy

using

system.text;  

namespace

ini  

//類的建構函式,傳遞ini檔名

publicvoid iniwritevalue(string

section,

string

key,

string

value)  

//寫ini檔案

publicstring inireadvalue(string

section,

string

key)  

//讀取ini檔案指定

}

}

呼叫inifile類:

新建乙個標準的c# windows應用程式專案,在窗體中分別增加命名為sect、key、val的三個文字框。

增加如下**:

using ini;			//建立命名空間

//當窗體關閉時儲存窗體座標

[c-sharp]view plain

copy

privatevoid form1_closing(

object

sender, system.componentmodel.canceleventargs e)  

//當窗體啟動時,讀取ini檔案的值並賦值給窗體

[c-sharp]view plain

copy

privatevoid form1_load(

object

sender, system.eventargs e)  

}  

*********************************************=
其他方法:
dllimport("kernel32.dll")]

public extern static int getprivateprofilestring(string segname, string keyname, string sdefault, stringbuilder buffer, int nsize, string filename);public extern static int getprivateprofilestringa(string segname, string keyname, string sdefault, byte buffer, int ilen, string filename); // ansi版本

[dllimport("kernel32.dll")]

public extern static int getprivateprofilesection(string segname, stringbuilder buffer, int nsize, string filename);

[dllimport("kernel32.dll")]

public extern static int writeprivateprofilesection(string segname, string svalue, string filename);

[dllimport("kernel32.dll")]

public extern static int writeprivateprofilestring(string segname, string keyname, string svalue, string filename);

[dllimport("kernel32.dll")]

public extern static int getprivateprofilesectionnamesa(byte buffer, int ilen, string filename);

[c-sharp]view plain

copy

// 封裝的方法中,最有價值的是獲取所有sections和所有的keys,網上關於這個的**大部分是錯誤的,這裡給出乙個正確的方法:

/// 返回該配置檔案中所有section名稱的集合

public

arraylist readsections()  

}  }  return

arraylist;  

}  // 獲取節點的所有key值

public

arraylist readkeys(

string

sectionname)  

}  }  return

arraylist;  

}

C 讀取ini配置檔案

using system using system.io using system.runtime.interopservices using system.text todo 在此處新增建構函式邏輯 public class iniclass 寫入ini檔案 專案名稱 如 typename 鍵 值...

C 讀取ini配置檔案

雖然微軟早已經建議在windows中用登錄檔代替ini檔案,但是在實際應用中,ini檔案仍然有用武之地,尤其現在綠色軟體的流行,越來越多的程式將自己的一些配置資訊儲存到了ini檔案中。section key valuevc中提供了api函式進行ini檔案的讀寫操作,但是微軟推出的c 程式語言中卻沒有...

ini配置檔案讀取類 C

using system using system.io using system.runtime.interopservices using system.text using system.collections using system.collections.specialized publ...