舉例:設現有一名學生,需把他的姓名和年齡寫入 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 下程式設計的時候,我們一般自己產生乙個檔案,由自己把這些資料寫到檔案中,然後在下一次...