1. 程式人生 > >讀寫ini檔案的方法

讀寫ini檔案的方法

在我們寫的程式當中,總有一些配置資訊需要儲存下來,以便完成程式的功能,最簡單的辦法就是將這些資訊寫入INI檔案中,程式初始化時再讀入.具體應用如下:
  一.將資訊寫入.INI檔案中.
  1.所用的WINAPI函式原型為: 
BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
); 
  其中各引數的意義:
   LPCTSTR lpAppName 是INI檔案中的一個欄位名.
   LPCTSTR lpKeyName 是lpAppName下的一個鍵名,通俗講就是變數名.
   LPCTSTR lpString 是鍵值,也就是變數的值,不過必須為LPCTSTR型或CString型的.

LPCTSTR lpFileName 是完整的INI檔名.

2.具體使用方法:設現有一名學生,需把他的姓名和年齡寫入 c:/stud/student.ini 檔案中. 

CString strName,strTemp;
int nAge;
strName="張三";
nAge=12;
::WritePrivateProfileString("StudentInfo","Name",strName,"c://stud//student.ini"); 

此時c:/stud/student.ini檔案中的內容如下:
[StudentInfo]

   Name=張三
  3.要將學生的年齡儲存下來,只需將整型的值變為字元型即可:
strTemp.Format("%d",nAge);
::WritePrivateProfileString("StudentInfo","Age",strTemp,"c://stud//student.ini"); 

  二.將資訊從INI檔案中讀入程式中的變數.
  1.所用的WINAPI函式原型為:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName, 
LPCTSTR lpKeyName, 
LPCTSTR lpDefault, 
LPTSTR lpReturnedString, 
DWORD nSize, 
LPCTSTR lpFileName 
); 
  其中各引數的意義: 
   前二個引數與 WritePrivateProfileString中的意義一樣.

   lpDefault : 如果INI檔案中沒有前兩個引數指定的欄位名或鍵名,則將此值賦給變數. 
   lpReturnedString : 接收INI檔案中的值的CString物件,即目的快取器.
   nSize : 目的快取器的大小.
   lpFileName : 是完整的INI檔名.
  2.具體使用方法:現要將上一步中寫入的學生的資訊讀入程式中.
CString strStudName;
int nStudAge; 
GetPrivateProfileString("StudentInfo","Name","預設姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c://stud//student.ini"); 
  執行後 strStudName 的值為:"張三",若前兩個引數有誤,其值為:"預設姓名".

  3.讀入整型值要用另一個WINAPI函式: 
UINT GetPrivateProfileInt(
LPCTSTR lpAppName, 
LPCTSTR lpKeyName, 
INT nDefault, 
LPCTSTR lpFileName 
); 
  這裡的引數意義與上相同.使用方法如下:

nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c://stud//student.ini"); 

  三.迴圈寫入多個值,設現有一程式,要將最近使用的幾個檔名儲存下來,具體程式如下:
  1.寫入:
CString strTemp,strTempA;
int i;
int nCount=6;
file://共有6個檔名需要儲存

for(i=0;i {strTemp.Format("%d",i);
strTempA=檔名;
file://檔名可以從陣列,列表框等處取得.
::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,"c://usefile//usefile.ini");
}
strTemp.Format("%d",nCount);
::WritePrivateProfileString("FileCount","Count",strTemp,"c://usefile//usefile.ini");
file://將檔案總數寫入,以便讀出. 

  2.讀出:
nCount=::GetPrivateProfileInt("FileCount","Count",0,"c://usefile//usefile.ini");
for(i=0;i {strTemp.Format("%d",i);

strTemp="FileName"+strTemp;
::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c://usefile//usefile.ini");

file://使用strTempA中的內容.


  補充四點:

   1.INI檔案的路徑必須完整,檔名前面的各級目錄必須存在,否則寫入不成功,該函式返回 FALSE 值.

   2.檔名的路徑中必須為 // ,因為在VC++中, // 才表示一個 / .

   3.也可將INI檔案放在程式所在目錄,此時 lpFileName 引數為: ".//student.ini".

   4.從網頁中貼上原始碼時,最好先貼上至記事本中,再往VC中貼上,否則易造成編譯錯誤,開始時我也十分不解,好好的程式碼怎麼就不對呢?後來才找到這個方法.還有一些程式碼中使用了全形字元如:<,\等,也會
造成編譯錯誤.

INI檔案程式設計

    INI檔案在系統配置及應用程式引數儲存與設定方面,具有很重要的作用,所以視覺化的程式設計一族,如VB、VC、VFP、Delphi等都提供了讀寫INI檔案的方法,其中Delphi中操作INI檔案,最為簡潔,這是因為Delphi3提供了一個TInifile類,使我們可以非常靈活的處理INI檔案。 

一、有必要了解INI檔案的結構:
;註釋
[小節名]
關鍵字=值
...
  INI檔案允許有多個小節,每個小節又允許有多個關鍵字, "="後面是該關鍵字的值。 
  值的型別有三種:字串、整型數值和布林值。其中字串存貯在INI檔案中時沒有引號,
布林真值用1表示,布林假值用0表示。 
  註釋以分號";"開頭。 
二、定義
  1、在Interface的Uses節增加IniFiles; 
  2、在Var變數定義部分增加一行: 
myinifile:Tinifile;
  然後,就可以對變數myinifile進行建立、開啟、讀取、寫入等操作了。 

三、開啟INI檔案


myinifile:=Tinifile.create('program.ini');


  上面這一行語句將會為變數myinifile與具體的檔案 program.ini建立聯絡,然後,就可以通過變數myinifile,來讀寫program.ini檔案中的關鍵字的值了。值得注意的是,如果括號中的檔名沒有指明路徑的話,那麼這個Program.ini檔案會儲存在Windows目錄中,把Program.ini檔案儲存在應用程式當前目錄中的方法是:為其指定完整的路徑及檔名。下面的兩條語句可以完成這個功能: 

Filename:=ExtractFilePath(Paramstr(0))+'program.ini';

myinifile:=Tinifile.Create(filename);

四、讀取關鍵字的值
  針對INI檔案支援的字串、整型數值、布林值三種資料型別,TINIfiles類提供了三種不同的物件方法來讀取INI檔案中關鍵字的值。 
  假設已定義變數vs、vi、vb分別為string、 integer、boolean型別。  

vs:=myinifile.Readstring('小節名','關鍵字',預設值);
vi:=myinifile.Readinteger('小節名','關鍵字',預設值);
vb:=myinifile.Readbool('小節名','關鍵字',預設值);

  其中預設值為該INI檔案不存在該關鍵字時返回的預設值。 

五、寫入INI檔案
  同樣的,TInifile類也提供了三種不同的物件方法,向INI檔案寫入字串、整型數及布林型別的關鍵字。  

myinifile.writestring('小節名','關鍵字',變數或字串值);
myinifile.writeinteger('小節名','關鍵字',變數或整型數值);
myinifile.writebool('小節名','關鍵字',變數或True或False);
  當這個INI檔案不存在時,上面的語句還會自動建立該INI檔案。 
六、刪除關鍵字
  除了可用寫入方法增加一個關鍵字,Tinifile類還提供了一個刪除關鍵字的物件方法: 
myinifile.DeleteKey('小節名','關鍵字');

七、小節操作
  增加一個小節可用寫入的方法來完成,刪除一個小節可用下面的物件方法: 
   myinifile.EraseSection('小節名');
  另外Tinifile類還提供了三種物件方法來對小節進行操作: 
  myinifile.readsection('小節名',TStrings變數);可將指定小節中的所有關鍵字名讀取至一個字串列表變數中; 
  myinifile.readsections(TStrings變數);可將INI檔案中所有小節名讀取至一個字串列表變數中去。 
  myinifile.readsectionvalues('小節名',TStrings變數);可將INI檔案中指定小節的所有行(包括關鍵字、=、值)讀取至一個字串列表變數中去。 

八、釋放
在適當的位置用下面的語句釋放myinifile:
myinifile.distory;

相關推薦

MFCini檔案方法

VC中用函式讀寫ini檔案的方法          ini檔案(即Initialization file),這種型別的檔案中通常存放的是一個程式的初始化資訊。ini檔案由若干個節(Section)組成,每個Section由若干鍵(Key)組成,每個Key可以賦相應的值。讀寫ini檔案實際上就是讀寫某個的Sec

WIN32INI檔案方法

概述 在程式中經常要用到設定或者其他少量資料的存檔,以便程式在下一次執行的時候可以使用,比如說儲存本次程式執行時視窗的位置、大小、一些使用者設定的 資料等等,在 Dos 下程式設計的時候,我們一般自己產生一個檔案,由自己把這些資料寫到檔案中,然後在下一次執行的時候再讀出來使

C#中INI檔案方法例子

[DllImport(“kernel32”)] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); [DllImp

ini檔案方法

在我們寫的程式當中,總有一些配置資訊需要儲存下來,以便完成程式的功能,最簡單的辦法就是將這些資訊寫入INI檔案中,程式初始化時再讀入.具體應用如下:  一.將資訊寫入.INI檔案中.  1.所用的WINAPI函式原型為: BOOL WritePrivateProfileStr

QTINI檔案的實現方法

1、包含標頭檔案#include <QSettings>2、如何寫INI檔案(1)定義一個QSettings指標物件例如:QSettings *Config_ini_Write ;(2)例項化物件例如:Config_ini_Write = new QSetting

VC中用函式ini檔案方法

在我們寫的程式當中,總有一些配置資訊需要儲存下來,以便完成程式的功能,最簡單的辦法就是將這些資訊寫入INI檔案中,程式初始化時再讀入.具體應用如下:  一.將資訊寫入.INI檔案中.  1.所用的WINAPI函式原型為: BOOL WritePrivateProfileStr

【轉】VC中用函式ini檔案方法

VC中用函式讀寫ini檔案的方法          ini檔案(即Initialization file),這種型別的檔案中通常存放的是一個程式的初始化資訊。ini檔案由若干個節(Section)組成,每個Section由若干鍵(Key)組 成,每個Key可以賦相應的值。讀寫ini檔案實際上就是讀寫某個的Se

pythoncsv檔案方法總結

python提供了大量的庫,可以非常方便的進行各種操作,現在把python中實現讀寫csv檔案的方法使用程式的方式呈現出來。 1、使用csv讀寫csv檔案方法總結 reader()函式是一個閱讀器把閱讀的CSV檔案每一行以一個列表表示出來以至於你可以用for迴圈來遍歷他 讀檔案的時候,開啟檔

QT QSettingsini檔案的用法

QSettings *config_write=new QSettings("eric.ini",QSettings::IniFormat); config_write->setValue("ip/first","192.168.0.1"); config_wr

vbini檔案

程式碼最開頭加入這個: Private Declare Function GetPrivateProfileString Lib “kernel32” Alias “GetPrivateProfileStringA” ( _ ByVal lpApplicationName As String

WINCE C#INI檔案

最近開發一個CE上的GPS程式,用到配置儲存,由於資料比較少且資料結構簡單,所以採用了INI格式,WINCE沒有提供windows裡讀寫ini的函式,就自己寫了一個,程式碼如下(C#):     ///////////////////////////////////////

C++ Windows API INI檔案

BOOL WritePrivateProfileString( LPCTSTR lpAppName, // INI檔案中的一個欄位名[節名]可以有很多個節名 LPCTSTR lpKeyName, // lpAppName 下的一個鍵名,也就是裡面具體的變數名 LPCTSTR lpStri

菜鳥學Python(12):怎麼ini檔案

比如有一個檔案update.ini,裡面有這些內容:[ZIP]EngineVersion=0DATVersion=5127FileName=dat-5127.zipFilePath=/pub/antivirus/datfiles/4.x/FileSize=13481555Ch

C# INI檔案

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; u

pythonini檔案的模組

使用dict4ini Examples Example 1 Create a ini file import dict4ini    x = dict4ini.DictIni('test.ini')    x.common.name ='limodou'    x.com

ini檔案

獲取exe執行檔案目錄 CString getExeDir() { TCHAR exepath[MAX_PATH]; CString strini,tmpdir; memset(exepath,0,MAX_PATH); GetModuleFileName(

C#中處理Ini檔案

{    public string FileName; //INI檔名    //宣告讀寫INI檔案的API函式    [DllImport("kernel32")]    private static extern bool WritePrivateProfileString(string section

【MFC】VCini檔案

可以用於載入時,讀取上一次的紀錄。 一:寫ini配置檔案: //獲取exe路徑 CString strPath; GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),M

簡單好用的ini檔案的類

{ CIniWriter iniWriter(".//Logger.ini"); iniWriter.WriteString("Setting", "Name", "jianxx");    iniWriter.WriteInteger("Setting", "Age", 27);  iniWriter.Wr

C++ini配置檔案GetPrivateProfileString WritePrivateProfileStr

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!