delphi API讀寫INI檔案

2021-06-21 16:19:03 字數 4252 閱讀 1747

文章出處:

前些天見有個網友問怎麼用api來實現對ini檔案的讀寫,這個問題我也早就想實現一下,可一直沒有做,現在終於又多了乙個理由來研究它了

用api寫ini檔案的函式有

bool writeprivateprofilestring(

lpctstr lpkeyname, // 鍵名

lpctstr lpstring, // 新增的字串

lpctstr lpfilename // ini檔名 );

bool writeprivateprofilestruct(

lpctstr lpszsection, // pointer to section name

lpctstr lpszkey, // pointer to key name

lpvoid lpstruct, // 要寫入的資料緩衝區

uint usizestruct, // 緩衝區的大小

lpctstr szfile // pointer to initialization filename );

bool writeprivateprofilesection(

lpctstr lpstring, // 寫入的字串

lpctstr lpfilename // pointer to string with filename );

用api讀ini檔案的函式有

dword getprivateprofilestring(

lpctstr lpkeyname, // points to key name

lpctstr lpdefault, // 預設字串 ,如果沒有則返回該值

lptstr lpreturnedstring, // 返回的字串

dword nsize, // 返回字串的大小

lpctstr lpfilename // points to initialization filename );

dword getprivateprofilesection(

lptstr lpreturnedstring, // address of return buffer

dword nsize, // size of return buffer

lpctstr lpfilename // address of initialization filename   );

uint getprivateprofileint(

lpctstr lpkeyname, // address of key name

int ndefault, // return value if key name is not found

lpctstr lpfilename // address of initialization filename

); bool getprivateprofilestruct(

lpctstr lpszsection, // address of section name

lpctstr lpszkey, // address of key name

lpvoid lpstruct, // address of return buffer

uint usizestruct, // size of return buffer

lpctstr szfile // address of initialization filename );

dword getprivateprofilesectionnames(

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);

這句不用多解釋吧?

以上就是這些函式的用法。你可能要問「怎麼只有寫字串的呀,怎麼沒有寫其它的型別的呢?」,問的好,不過其它型別的用writeprivateprofilestring都能代替,如要寫浮點型的就把該型別的放到』』當中,如』12.5』。那位學友又問了,「如果是讓使用者輸入,他們也不知道應該輸入什麼,怎麼能限制他們輸入的都是數字」,這方法可太多了,如用控制項或檢查它們是不是在指定的數字,你可別說不會限制它們是不是數字呀*_^,如果真的不會,你就看它們的ascii碼是不是在48-57之間就行了。「那讀出呢?」,delphi不是有strtoint,strtofloat,strtocurr等這麼函式嘛,可以用它們來轉換。

我在研究這些函式的同時,發現了一段有趣程式**,但我不知道它為什麼要這樣做,有什麼好處,大家可以看看它們,不過是用c寫的,它們在delphi sdk或msdn中查詢writeprivateprofilestring函式,在最下面的那個段**就是

configparser讀寫ini配置檔案

讀取配置檔案 寫入配置檔案 判斷某元素是否存在 has option has section 要讀寫的ini檔案 sec a a key1 20 a key2 10 sec b b key1 121 b key2 b value2 b key3 r b key4 127.0.0.1 import c...

INI檔案讀寫

一 有必要了解ini檔案的結構 注釋 小節名 關鍵字 值 ini檔案允許有多個小節,每個小節又允許有多個關鍵字,後面是該關鍵字的值。值的型別有三種 字串 整型數值和布林值。其中字串存貯在ini檔案中時沒有引號,布林真值用1表示,布林假值用0表示。注釋以分號 開頭。二 定義 1 在inte ce的us...

讀寫ini檔案

using system using system.io using system.text using system.configuration using system.runtime.interopservices using system.collections.specialized us...