ini檔案操作

2022-09-15 04:18:10 字數 3717 閱讀 3795

舉例:設現有一名學生,需把他的姓名和年齡寫入 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");

1.寫入:

cstring strtemp,strtempa;

int i;

int ncount=6;

file://共有6個檔名需要儲存

for(i=0;i

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中貼上,否則易造成編譯錯誤,開始時我也十分不解,好好的**怎麼就不對呢?後來才找到這個方法.還有一些**中使用了全形字符如:<,\等,也會造成編譯錯誤.

bool writeprivateprofilestruct(

lpctstr lpszsection, // 節點

lpctstr lpszkey, // 鍵名

lptstr lpszreturnbuffer, // address of return buffer 

dword nsize, // size of return buffer 

lpctstr lpfilename // address of initialization filename

);當然還有如writeprofilestring,writeprofilesection,writeprofilesturct, getprofilestring,getprofilestruct,getprofilesectionnames,getprofileint,getprofilesection但這些只對win.ini有效

下面我們來學習它們的用法

writeprivateprofilestring函式是向ini檔案中寫入字串,如

writeprivateprofilestring(pchar('型別'),pchar('api'),pchar('api 真好!'),pchar('c:\example.ini'));

如果第二個引數是nil,那麼該操作將刪除該節

如果第三個引數為nil,那麼該操作將刪除該節中的所有鍵

如果在指定的檔案中沒有路徑,那麼它將在系統的目錄尋找檔案,如果不存在則建立

writeprivateprofilesection是向檔案中寫入一整個鍵,其它鍵的格式為key = value,如

writeprivateprofilesection(pchar('型別'),pchar('其它=123'),pchar('c:\example.ini'));

注意,該操作將刪除該節中的所有鍵後在進行本次的寫入

writeprivateprofilestruct是向檔案中寫入乙個結構,如

type

tperson = record

name:string;

age:integer;

end;

varper:tperson;

writeprivateprofilestruct(pchar('型別'),pchar('結構'),@per,sizeof(per),pchar('c:\example.ini'));

getprivateprofilestring是從檔案中讀出乙個指定鍵的字串,如果沒有找到,則返回預設值

getprivateprofilestring(pchar(『型別'),pchar('api'),pchar('no value'),str1,21,pchar('c:\example.ini'));

getprivateprofilesection是從檔案中讀出一整個鍵

getprivateprofilesection('型別',str1,200,'c:\example.ini');

getprivateprofileint是從檔案中讀出指定鍵的整型值,如果沒找到或不是整型的值,則返回預設值,如果返回值小於0,則返回0,如

i:=getprivateprofileint(pchar('型別'),pchar('整型'),i,pchar('c:\example.ini'));

showmessage(inttostr(i));

getprivateprofilestruct從檔案中讀出指定鍵的結構值,如

type

tperson = record

name:string;

age:integer;

end;

varbuffer:tperson;

getprivateprofilestruct(pchar('型別'),pchar('結構'),@buffer,sizeof(per),pchar('c:\example.ini'));

getprivateprofilesectionnames是從檔案中讀出所有節的名稱,該函式返回讀入緩衝區的字元數,如

count:=getprivateprofilesectionnames(str3,200,pchar('c:\example.ini'));

showmessage(str3);

此處顯示的只是第乙個節的名稱,如果要顯示第二個字元的名稱則要用到下面這句

showmessage(str3+5);//字串偏移到下乙個字串開始處

通過一下方法可以查詢到絕對位址

cstring des="";

::getcurrentdirectory(_max_path,des.getbuffer(_max_path));

des.releasebuffer();

des+="\\com.ini";

ini檔案操作

uses inifiles 寫入 varfilename string fileini tinifile begin filename extractfilepath paramstr 0 connect.ini fileini tinifile.create filename fileini.wr...

ini檔案操作

using system using system.collections.generic using system.linq using system.text using system.runtime.interopservices using system.io namespace inifi...

ini檔案操作

最近在整ini檔案,看到一篇不錯的介紹就轉了過來 概述在程式中經常要用到設定或者其他少量資料的存檔,以便程式在下一次執行的時候可以使用,比如說儲存本次程式執行時視窗的位置 大小 一些使用者設定的資料等等,在 dos 下程式設計的時候,我們一般自己產生乙個檔案,由自己把這些資料寫到檔案中,然後在下一次...