亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi中初始化.Ini文件的讀寫

2019-11-18 18:56:28
字體:
供稿:網(wǎng)友

Windows中的應(yīng)用程序極大多數(shù)擁有自己的初始化文件,如PowerBuilder、Office及Cstar等。因此初始化文件的讀寫是每個高級程序員必須掌握的技術(shù)。雖然初始化文件的讀寫也可用Object Pascal中的文本文件一樣讀寫,但因初始化文件不同于一般的文本文件,它有自己固定的格式(見下面的初始化文件是ucdos中提供的rdfnt.ini文件),如果用文本文件的方式讀寫,不僅格式轉(zhuǎn)換十分繁瑣,且很容易出現(xiàn)錯誤,為了方便程序員讀寫初始化文件中的數(shù)據(jù),Delphi中向用戶提供了一個TIniFile類,通過TiniFile類就可十分方便地讀寫初始化文件。

Ucdosrdfnt.ini文件的內(nèi)容為:

[True Type fonts directory]

Dir=C:WINDOWSSYSTEM

 

[True Type fonts list]

ARIAL.TTF=64

ARIALBD.TTF=65

ARIALI.TTF=66

ARIALBI.TTF=67

TIMES.TTF=68

TIMESBD.TTF=69

TIMESI.TTF=70

TIMESBI.TTF=71

COUR.TTF=72

COURBD.TTF=73

COURI.TTF=74

COURBI.TTF=75

 

[Use All True Type fonts]

All=0

 

TiniFile類不是一個Delphi的部件,因此不能在DelphiVCL模板中找到,它在Delphi 系統(tǒng)中的inifiles單元中定義,因此要使用TiniFile類,必須在使用該類的單元文件中用Uses  inifiles指令明確地說明。

TiniFile類中定義了許多成員函數(shù),這里介紹幾個使用頻率較高的成員函數(shù):

    Create()

    函數(shù)定義為:  constructor Create(const FileName: string);

該函數(shù)建立TiniFile類的對象。參數(shù)FileName是要讀寫的初始化文件名。

若讀寫的文件在Windows的目錄里(如system.ini文件),則可以直接寫文件名而不必指定路徑,否則就必須指定路徑(如d:ucdos dfnt.ini)。

如按以下規(guī)則在規(guī)定的目錄中存在該文件,則打開該初始化文件;否則在規(guī)定的目錄里創(chuàng)建該初始化文件。

    ReadSections()

    過程定義為:  PRocedure ReadSections(Strings: TStrings);

該過程將從所建立的TiniFile類的對象(即與之關(guān)聯(lián)的初始化文件)中讀取所有的節(jié)點(diǎn)名(即用[]括號括起的那部分,如rdfnt.ini文件中的[True Type fonts list])存入字符串列表中。參數(shù)Strings即為字符串列表的變量名。

    ReadSectionValues()

    過程定義為:  procedure ReadSectionValues(const Section: string; Strings: TStrings);

    該過程將參數(shù)Section的值所對應(yīng)的節(jié)點(diǎn)(如rdfnt.ini文件中的[True Type fonts list])中的各個關(guān)鍵字(如ARIALBI.TTF)及其所含的值(如ARIALBI.TTF關(guān)鍵字值為67)讀入?yún)?shù)Strings指明的字符串列表中。

    ReadSection()

過程定義為:  procedure ReadSection(const Section: string; Strings: TStrings);

該過程將參數(shù)Section的值所對應(yīng)的節(jié)點(diǎn)中的各個關(guān)鍵字讀入?yún)?shù)Strings指明的字符串列表中。與ReadSectionValues()不同的是它沒有讀取各個關(guān)鍵字的對應(yīng)值。

    ReadString()

    函數(shù)定義為:  function ReadString(const Section, Ident, Default: string): string;

該函數(shù)返回以參數(shù)Section的值為節(jié)點(diǎn)名、參數(shù)Ident的值為關(guān)鍵字名所對應(yīng)的關(guān)鍵字值(如[True Type fonts list]節(jié)中ARIALBI.TTF關(guān)鍵字的值為67)。當(dāng)指定的節(jié)點(diǎn)或節(jié)內(nèi)的關(guān)鍵字不存在時,則函數(shù)返回參數(shù)Default的缺省值。返回的值是一個字符串型數(shù)據(jù)。

當(dāng)指定節(jié)點(diǎn)中關(guān)鍵字值的數(shù)據(jù)類型不是字符串時,則可用ReadInteger()成員函數(shù)讀取一個整型值,用ReadBool()成員函數(shù)讀取一個布爾值。

    WriteString()

過程定義為:  procedure WriteString(const Section, Ident, Value: string);

該過程將參數(shù)Section的值為節(jié)點(diǎn)名、參數(shù)Ident的值為關(guān)鍵字名的關(guān)鍵字值設(shè)置為參數(shù)Value的值。該過程設(shè)置的是字符串型數(shù)據(jù)。

當(dāng)指定節(jié)點(diǎn)和關(guān)鍵字均存在時,則用Value的值替代原值;如指定節(jié)點(diǎn)不存在,則在關(guān)聯(lián)的初始化文件中自動增加一個節(jié)點(diǎn),該節(jié)點(diǎn)的值為參數(shù)Section的值,并在該節(jié)點(diǎn)下自動增加一個關(guān)鍵字,關(guān)鍵字名為參數(shù)Ident的值,該關(guān)鍵字對應(yīng)的值為參數(shù)Value的值;若節(jié)點(diǎn)存在,但關(guān)鍵字不存在,則在該節(jié)點(diǎn)下自動增加一個關(guān)鍵字,關(guān)鍵字名為參數(shù)Ident的值,該關(guān)鍵字對應(yīng)的值為參數(shù)Value的值。

若要設(shè)置整型值,可調(diào)用WriteInteger()成員函數(shù);用WriteBool()成員函數(shù)設(shè)置布爾值。

知道了以上函數(shù)的作用,要建立或讀寫一個初始化文件就不難了。下面以一個實(shí)際例子說明初始化文件的讀取方法,步驟如下:


  在需要讀寫初始化文件的窗體(Form)上放置名為SectionComboBox、IdentComboBox的兩個組合式列表框,其中SectionComboBox存放節(jié)點(diǎn)名,IdentComboBox存放所選擇節(jié)點(diǎn)的關(guān)鍵字名。一個名為IdentValueEdit的輸入框,存放對應(yīng)關(guān)鍵字的值。名為CmdChang的修改命令鈕可以用來修改關(guān)鍵字的值,修改后用名為CmdSave的存儲命令鈕將修改后的關(guān)鍵字的值存入關(guān)聯(lián)的初始化文件。窗體對應(yīng)的單元名設(shè)為IniUnit,窗體名設(shè)為IniForm,窗體布局如下圖一所示:

 


  IniUnit單元的interface部分用uses inifiles;說明要引用的TiniFile類所定義的單元名。并在變量說明部分定義TiniFile類的對象,如

var  IniFile:  TiniFile;

  建立窗體的OnCreate事件過程。使用TIniFile類的Create成員函數(shù)創(chuàng)建TIniFile對象,用該對象讀寫d:ucdos目錄中的rdfnt.ini初始化文件,并將該初始化文件中的所有節(jié)點(diǎn)通過ReadSections() 成員函數(shù)讀入SectionComboBox組合式列表框中,用ReadSection()成員函數(shù)將第一個節(jié)點(diǎn)中的所有關(guān)鍵字讀入IdentComboBox 組合式列表框,用ReadString()成員函數(shù)將第一個關(guān)鍵字的值送入IdentValueEdit輸入框。

  建立SectionComboBox組合式列表框的OnChange事件過程。當(dāng)該選擇列表框中的不同項目(即不同的節(jié)點(diǎn)名)時,用ReadSection()成員函數(shù)將選節(jié)點(diǎn)中的所有關(guān)鍵字讀入IdentComboBox 組合式列表框,并用ReadString()成員函數(shù)將第一個關(guān)鍵字的值送入IdentValueEdit輸入框。

  建立IdentComboBox組合式列表框的OnChange事件過程。當(dāng)該選擇列表框中的不同項目(即不同的關(guān)鍵字名)時,用ReadString()成員函數(shù)將該關(guān)鍵字的值送入IdentValueEdit輸入框。

  建立命令鈕CmdChang的OnClick事件過程。使IdentValueEdit輸入框中的內(nèi)容可以修改(不按該命令鈕,IdentValueEdit輸入框是不能修改的),并設(shè)置命令鈕CmdSave有效,可以將修改后的關(guān)鍵字值存入關(guān)聯(lián)的初始化文件中。

  建立命令鈕CmdSaveOnClick事件過程。如果關(guān)鍵字值已改變,則調(diào)用WriteString()成員函數(shù)將修改后的關(guān)鍵字的值存盤。

  建立窗體的OnDestroy事件過程。當(dāng)窗體失效時,將建立的TIniFile對象釋放,以釋放該對象所戰(zhàn)用的系統(tǒng)資源。

至此,運(yùn)行該工程,初始化文件的讀寫已能順利進(jìn)行。當(dāng)然還可以使用EraseSection()成員函數(shù)刪除指定的節(jié),也可用DeleteKey()成員函數(shù)刪除指定的關(guān)鍵字,因篇幅有限,這里就不詳細(xì)介紹了,有興趣的可參考Delphi的使用幫助。

下面是該單元的源程序代碼:

unit IniUnit;

 

interface

 

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  StdCtrls, inifiles;

 

type

  TIniForm = class(TForm)

    SectionComboBox: TComboBox;

    Label1: TLabel;

    CmdSave: TButton;

    CmdChang: TButton;

    IdentComboBox: TComboBox;

    IdentValueEdit: TEdit;

    Label2: TLabel;

    Label3: TLabel;

    procedure FormCreate(Sender: TObject);

    procedure SectionComboBoxChange(Sender: TObject);

    procedure FormDestroy(Sender: TObject);

    procedure CmdChangClick(Sender: TObject);

    procedure CmdSaveClick(Sender: TObject);

    procedure IdentComboBoxChange(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  IniForm: TIniForm;

{ Delphi中通過TIniFile類讀寫Windows的初始化文件 }

  IniFile:      TIniFile;

 

implementation

 

{$R *.DFM}

 

procedure TIniForm.FormCreate(Sender: TObject);

begin

{ 使用TIniFile類的Create成員函數(shù)建立TIniFile

象,該對象用來讀寫d:ucdos目錄中的rdfnt.ini文件,

如果讀寫的文件在Windows的目錄里(如system.ini),

則可以直接寫文件名而不必指定路徑 }

  IniFile:=TIniFile.Create('d:ucdos dfnt.ini');

{ TIniFile對象關(guān)聯(lián)的初始化文件system.ini中的所

有節(jié)(即用[]括號括起的那部分)的節(jié)名送入下拉式組

合列表框SectionComboBox }

  SectionComboBox.Clear;

  IniFile.ReadSections(SectionComboBox.Items);

{ 選擇system.ini文件的第一個節(jié)名 }

  SectionComboBox.ItemIndex:=0;

  SectionComboBoxChange(Sender);

  CmdSave.Enabled:=False;

end;

 

{ 將組合列表框IniComboBox中所選擇節(jié)中對應(yīng)的各個

變量及對應(yīng)的值送入多行文本編輯器IniMemo }

procedure TIniForm.SectionComboBoxChange(Sender: TObject);

begin

  IdentComboBox.Clear;

  IniFile.ReadSection(SectionComboBox.Text,

                  IdentComboBox.Items);

  IdentComboBox.ItemIndex:=0;

  IdentComboBoxChange(Sender);

end;

 

procedure TIniForm.IdentComboBoxChange(Sender: TObject);

begin

  IdentValueEdit.Enabled:=False;

  { 將選擇的關(guān)鍵字值讀入 }

  IdentValueEdit.Text:=

      IniFile.ReadString(SectionComboBox.Text,

      IdentComboBox.Text,');

end;

 

procedure TIniForm.CmdChangClick(Sender: TObject);

begin

  CmdSave.Enabled:=True;

  IdentValueEdit.Enabled:=True;

  IdentValueEdit.SetFocus;

end;

 

procedure TIniForm.CmdSaveClick(Sender: TObject);

begin

  if IdentValueEdit.Modified then begin

    IniFile.WriteString(SectionComboBox.Text,

                        IdentComboBox.Text,

                        IdentValueEdit.Text);

  end;

  IdentValueEdit.Enabled:=False;

  CmdSave.Enabled:=False;

end;

 

procedure TIniForm.FormDestroy(Sender: TObject);

begin

  IniFile.Free;  { 釋放創(chuàng)建的對象 }

end;

 

end.

以上方法在Windows 95下用Delphi 3.0調(diào)試通過。

上一篇:DELPHI的原子世界

下一篇:Delphi開發(fā)者快速解決問題的兩大網(wǎng)絡(luò)利器

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

欧美激情性爽国产精品17p| 中文在线资源观看网站视频免费不卡| 午夜精品视频一区二区三区在线看| 大香伊人中文字幕精品| 成人无码av片在线观看| 波多野结衣久久| 好吊视频一区二区三区四区| 十大黄色软件免费看| 性欧美成人播放77777| 欧美巨乳美女视频| 国产日韩欧美在线视频观看| 欧美精品色综合| 日日骚一区二区网站| 国产成人综合网站| 久久久久亚洲av无码专区体验| 九色蝌蚪国产| 国产精品日本一区二区不卡视频| 久久精品视频2| 91在线播放网址| 国产精品一区二三区| 91在线码无精品| 国产精品美女久久久久久2018| 成人动漫精品一区二区| 九九视频直播综合网| 国产精品国产三级国产专业不| 性爱在线免费视频| 国产精品一区在线播放| 久久久久久久久久久网站| 欧美性受xxxx| 亚洲爱爱爱爱爱| 亚洲伊人成人网| www.黄在线| 精品二区在线观看| 国产99精品视频| 欧美日韩国产一级片| 中文在线а√天堂| 国产欧美精品在线| 亚洲小说区图片区都市| 国产第一页在线| 欧美日本在线视频中文字字幕| 欧美精品一区二区性色a+v| 欧美xxxx综合视频| 一区二区高清免费观看影视大全| 欧美性xxxx极品高清hd直播| 欧美日韩精品欧美日韩精品一综合| 精品伦一区二区三区| 在线不卡的av| 人人妻人人做人人爽| 人妻熟女aⅴ一区二区三区汇编| 男人午夜视频在线观看| 久久动漫网址| 亚洲女优在线| av中文字幕在线观看第一页| 国产一区二区三区久久悠悠色av| 中国女人内谢69xxxx免费视频| 国产精品特级毛片一区二区三区| 日本精品在线观看视频| 波多野结衣一二三区| 亚洲国产成人精品视频| 日本福利片高清在线观看| 国产精品∨欧美精品v日韩精品| 精品国产sm最大网站免费看| 毛片一级免费一级| 大胆av不用播放器在线播放| 俺去了亚洲欧美日韩| 国产日韩欧美视频在线| 久久久久成人精品免费播放动漫| 少妇激情综合网| 人人妻人人澡人人爽久久av| 一级二级三级欧美| 成人h动漫免费观看网站| 精品久久久久久中文字幕动漫| 日韩欧美一区二区三区四区| 黑人巨茎大战欧美白妇| 欧美成人免费全部| 免费a在线观看| 97久久精品人人爽人人爽蜜臀| 一级全黄裸体免费视频| 情se视频网在线观看| 我家有个日本女人| 国产伦一区二区三区色一情| 91精品国产高清一区二区三蜜臀| 91丨porny丨国产入口| 97精品久久久午夜一区二区三区| 国产欧美一区视频| 中文字幕国产日韩| 国产精品免费一区二区三区都可以| 亚洲国产女人aaa毛片在线| 成人免费观看在线网址| www天堂网| 久久免费在线观看视频| 成人一区二区三区视频| 亚洲性图一区二区| 久久国产视频播放| 国产人妻一区二区| 国严精品久久久久久亚洲影视| 天天插天天干天天操| 国产精彩视频在线| 国产成人无码精品久久二区三| 69视频在线观看免费| 欧美日韩一道本| 日韩中文字幕电影| 精品国产一级片| 91免费版网站在线观看| 91欧洲在线视精品在亚洲| 欧美 国产 综合| 免费在线观看视频一区| 桃花网日韩影视在线观看视频| 不许穿内裤随时挨c调教h苏绵| 国产精品视频一区二区三区四蜜臂| 国产美女主播在线观看| 六月天色婷婷| 91亚洲精品视频| 欧美成人综合网站| 国产激情视频一区二区在线观看| 九九久久国产| 91官网在线| 久久精品国产精品国产精品污| 青青青爽久久午夜综合久久午夜| 福利成人导航| 在线免费电影观看| 亚洲久久在线观看| 成人午夜精品福利免费| av中文字幕一区| 欧美一区二区三区少妇| 欧美色区777第一页| 国产成人精品网址| av中文字幕免费观看| 国产精品资源网站| 国产精品豆花视频| 青青操在线视频观看| 天天插天天干| 亚洲已满18点击进入在线看片| 美女无遮挡网站| 亚洲欧美综合久久久久久v动漫| 91精品国产自产精品男人的天堂| 在线看的黄色网址| 欧美最猛性xxxx高清| 欧美在线激情| 一本一道人人妻人人妻αv| 野花视频免费在线观看| 天堂网2014av| av免费在线不卡| 免费日韩在线视频| 亚洲制服中文字幕| 日本在线播放一二三区| 天天色综合久久| 国产传媒视频在线| 欧美日韩色综合| 国产suv精品一区二区68| 中文字幕久热精品在线视频| 精品黑人一区二区三区久久| 99视频精品免费观看| 欧美日韩午夜| 椎名由奈jux491在线播放| 欧美a∨亚洲欧美亚洲| 日韩黄色免费电影| 久久99精品久久久久久久青青日本| 伊人免费在线观看高清版| 九九这里只精品视在线99| 黑人精品无码一区二区三区AV| japanese中文字幕| 国产aaa精品| 九九热在线视频观看这里只有精品| 国产色综合天天综合网| 91精品久久久久久综合五月天| 天堂俺去俺来也www久久婷婷| 亚洲视频在线免费观看| 欧美va亚洲va国产综合| 538精品在线视频| 日韩精品一区二区在线| 久草在线成人| mm1313亚洲国产精品美女| 欧美少妇网站| 国产精品极品| 男人天堂视频在线观看| 国产一级精品视频| 午夜精品久久久久99蜜桃最新版| 2018中文字幕在线观看| 国产精品毛片一区二区在线看| 午夜丝袜av电影| 中文字幕一区二区精品区| 亚洲国产精品第一页| 自拍亚洲一区欧美另类| 欧美性欧美巨大黑白大战| 欧美另类专区| 日本三级黄色大片| 亚洲精品ady| 美女视频网站在线观看| 二区三区不卡不卡视频| 中文字幕亚洲欧美日韩在线不卡| h网站免费看| 亚洲成人国产| 欧美日韩国产999| 99久久精品免费观看国产| 国产精品久久久久久久第一福利| 成人中文字幕在线播放| 欧一区二区三区| 日韩a**中文字幕| 亚洲欧美在线一区| www.亚洲成人网| 国产av一区二区三区| 中文字幕国产一区二区| 欧美激情在线观看视频免费| 免费看日批视频| 91网页版在线| 久久中文字幕人妻| 日韩一区二区免费看| 国产一区二区三区91| 亚洲永久网站| 亚洲欧美一区二区三区四区| 亚洲一区在线视频观看| 亚洲av综合色区无码一区爱av| 久久久精品有限公司| 中文区中文字幕免费看| 日本一区二区三区免费视频| 日本高清不卡的在线| 精品国产福利视频| 精品一区久久久| 亚洲精品18在线观看| 日韩av手机在线| 亚洲自拍偷拍第一页| 成人精品在线观看视频| 91香蕉视频污| 国产亚洲欧美日韩在线观看一区二区| 麻豆一区二区三区| 国产黄色av免费看| 日韩一区二区三区xxxx| 欧美激情在线一区| 中文字幕免费国产精品| 久久午夜a级毛片| 亚洲精品无码专区在线播放| 激情综合网俺也去| 秋霞在线一区二区| 女女互磨互喷水高潮les呻吟| 欧洲在线/亚洲| 婷婷亚洲久悠悠色悠在线播放| av动漫在线免费观看| 米奇精品一区二区三区在线观看| 1024国产精品| 美美哒免费高清在线观看视频一区二区| 蜜臀在线观看| 18欧美乱大交hd1984| 精品人妻无码一区| 亚洲一区二区三区在线免费| 小草在线视频在线免费视频| 亚洲精品无播放器在线播放| 精品美女久久久久| 免费电影网站在线观看| 久久天天躁狠狠躁夜夜躁| 欧美精品在线观看一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 色婷婷av一区二区三区在线观看| 妞干网在线播放| 国产极品jizzhd欧美| www.日韩一区| 北条麻妃在线一区二区| 免费极品av一视觉盛宴| 伊人婷婷久久| 免费欧美一级片| 九九热播视频在线精品6| 成人黄色大片网站| 黄色成人在线| 亚洲最新永久在线观看| 国产网红主播福利一区二区| av小说在线| 18aaaa精品欧美大片h| 久久综合色综合| 三叶草欧洲码在线| 国产麻豆一区二区三区在线观看| 国产精品久久久久久久久晋中| 四虎影视2018在线播放alocalhost| 欧美视频一区二区| 91精彩在线视频| 日韩日韩日韩日韩| 日韩精品一区二区三区swag| 亚洲精品一区国产精品| 亚洲国产精品第一区二区| 欧美亚洲韩国| 亚洲精品1区2区3区| 成人手机视频在线| 国产一区91精品张津瑜| 精品无码一区二区三区的天堂| 日本美女在线中文版| 欧美一区二区播放| 日本三级一区二区三区| 欧美日韩亚洲综合一区二区三区激情在线| 亚洲黄色中文字幕| 黄色av网址在线观看| 最新中文字幕在线观看视频| 91网址在线看| 国内精品久久久久久影院8f| 国产精品99久久久久久宅男| 喷水一区二区三区| 一个人看的视频www| 一区二区三区成人| 欧美h版在线观看| 日韩成人一级大片| 操碰在线免费| 午夜一区在线观看| 亚洲欧美不卡| а√中文在线资源库| 国产一区二区三区四区大秀| 97caopor国产在线视频| 亚洲淫片在线视频| 日本在线播放一二三区| 色综合av在线| 美女视频黄频大全不卡视频在线播放| 亚洲一区二区四区蜜桃| 精品丝袜一区二区三区| 国产精品亚洲综合| 国产精品99久久久久久久女警| 国产日韩欧美一区二区三区四区| 男人操女人在线观看| 国产成人午夜视频| 亚洲精品电影在线| 国产无遮挡裸体视频在线观看| 中文字幕中文在线不卡住| 久久久久久97| 亚洲一区二区网站| 黄色成人在线| 99热99在线| 最新欧美色图| 欧美激情免费| 日韩三级av高清片| 国产99精品在线观看| 韩日视频一区| 精品国产乱码久久久久久闺蜜|