Sebagian besar aplikasi di Windows memiliki file inisialisasi sendiri, seperti PowerBuilder, Office, dan Cstar. Oleh karena itu, membaca dan menulis file inisialisasi merupakan teknologi yang harus dikuasai oleh setiap programmer senior. Meskipun membaca dan menulis file inisialisasi juga dapat dilakukan menggunakan Object File teks dalam Pascal dibaca dan ditulis dengan cara yang sama, tetapi karena file inisialisasi berbeda dari file teks biasa, maka file tersebut memiliki format tetapnya sendiri (lihat file inisialisasi di bawah adalah file rdfnt.ini yang disediakan di ucdos). menggunakan file teks untuk membaca Menulis, konversi format tidak hanya sangat membosankan, tetapi juga rentan terhadap kesalahan Untuk memfasilitasi programmer untuk membaca dan menulis data dalam file inisialisasi, Delphi menyediakan kelas TIniFile kepada pengguna, yang melaluinya file inisialisasi. dapat dibaca dan ditulis dengan sangat nyaman.
Isi file rdfnt.ini di Ucdos adalah:
[Direktori font Tipe Benar]
Dir=C:WINDOWSSYSTEM
[Daftar font Tipe Benar]
ARIAL.TTF=64
ARIALBD.TTF=65
ARIALI.TTF=66
ARIALBI.TTF=67
KALI.TTF=68
TIMESBD.TTF=69
KALI.TTF=70
TIMESBI.TTF=71
KURS.TTF=72
COURBD.TTF=73
KURI.TTF=74
COURBI.TTF=75
[Gunakan Semua font True Type]
Semua=0
Kelas TiniFile bukan merupakan komponen Delphi, sehingga tidak dapat ditemukan dalam templat VCL Delphi. Kelas ini didefinisikan dalam unit inifiles di sistem Delphi, oleh karena itu, untuk menggunakan kelas TiniFile, Anda harus secara eksplisit menggunakan direktif Uses inifiles di unit tersebut file yang menggunakan kelas ini.
Ada banyak fungsi anggota yang didefinisikan di kelas TiniFile. Berikut adalah beberapa fungsi anggota yang lebih sering digunakan:
⑴Buat()
Fungsi ini didefinisikan sebagai: konstruktor Create(const FileName: string);
Fungsi ini membuat objek kelas TiniFile. Parameter FileName adalah nama file inisialisasi yang akan dibaca dan ditulis.
Jika file yang akan dibaca dan ditulis ada di direktori Windows (seperti file system.ini), Anda dapat langsung menulis nama file tanpa menentukan jalurnya, jika tidak, Anda harus menentukan jalurnya (seperti d:ucdos dfnt.ini ).
Jika file ada di direktori yang ditentukan sesuai dengan aturan berikut, buka file inisialisasi; jika tidak, buat file inisialisasi di direktori yang ditentukan;
⑵BacaBagian()
Prosesnya didefinisikan sebagai: PROcedure ReadSections(Strings: TStrings);
Proses ini akan membaca semua nama node (yaitu, bagian yang diapit tanda kurung [], seperti [True Type font] di file rdfnt.ini) dari objek kelas TiniFile yang dibuat (yaitu, file inisialisasi yang terkait dengannya) list]) disimpan dalam daftar string. Parameter Strings adalah nama variabel dari daftar string.
⑶ BacaBagianNilai()
Prosedur ini didefinisikan sebagai: procedure ReadSectionValues(const Bagian: string; Strings: TStrings);
Proses ini mengonversi setiap kata kunci (seperti ARIALBI.TTF) di node yang sesuai dengan nilai parameter Bagian (seperti [Daftar font Tipe Benar] di file rdfnt.ini) dan nilai yang dikandungnya (seperti ARIALBI. Nilai kata kunci TTF adalah 67) dibaca ke dalam daftar string yang ditentukan oleh parameter Strings.
⑷ BacaBagian()
Prosedur ini didefinisikan sebagai: procedure ReadSection(const Bagian: string; Strings: TStrings);
Proses ini membaca setiap kata kunci di node yang sesuai dengan nilai parameter Bagian ke dalam daftar string yang ditentukan oleh parameter Strings. Perbedaannya dengan ReadSectionValues() adalah ia tidak membaca nilai yang sesuai dari setiap kata kunci.
⑸ BacaString()
Fungsi ini didefinisikan sebagai: function ReadString(const Bagian, Ident, Default: string): string;
Fungsi ini mengembalikan nilai kata kunci yang sesuai dengan nama node dengan nilai parameter Bagian dan nama kata kunci dengan nilai parameter Ident (misalnya, nilai kata kunci ARIALBI.TTF di bagian [Daftar font Tipe Benar] adalah 67). Ketika kata kunci di node atau bagian yang ditentukan tidak ada, fungsi mengembalikan nilai default parameter Default. Nilai yang dikembalikan adalah data string.
Ketika tipe data dari nilai kata kunci dalam node yang ditentukan bukan string, Anda dapat menggunakan fungsi anggota ReadInteger() untuk membaca nilai integer dan fungsi anggota ReadBool() untuk membaca nilai Boolean.
⑹ TulisString()
Prosedur didefinisikan sebagai: procedure WriteString(const Bagian, Ident, Nilai: string);
Proses ini menetapkan nilai kata kunci yang mana nilai parameter Bagian adalah nama node dan nilai parameter Ident adalah nama kata kunci dengan nilai parameter Nilai. Proses ini menetapkan data string.
Ketika node dan kata kunci yang ditentukan ada, nilai Value digunakan untuk menggantikan nilai asli; jika node yang ditentukan tidak ada, sebuah node secara otomatis ditambahkan ke file inisialisasi terkait, dan nilai node adalah nilai dari. parameter Bagian, dan dalam kata kunci A secara otomatis ditambahkan di bawah node. Nama kata kunci adalah nilai parameter Ident, dan nilai yang sesuai dengan kata kunci adalah nilai parameter Nilai tidak ada, kata kunci secara otomatis ditambahkan di bawah node. Nama kata kunci adalah nilai parameter Ident, dan nilai yang terkait dengan kata kunci ini adalah nilai parameter Nilai.
Untuk menetapkan nilai integer, panggil fungsi anggota WriteInteger(); gunakan fungsi anggota WriteBool() untuk menetapkan nilai Boolean.
Mengetahui fungsi dari fungsi-fungsi di atas, tidak sulit untuk membuat atau membaca dan menulis file inisialisasi. Berikut ini contoh praktis untuk mengilustrasikan metode pembacaan file inisialisasi. Langkah-langkahnya adalah sebagai berikut:
⒈ Tempatkan dua kotak daftar gabungan bernama SectionComboBox dan IdentComboBox pada formulir yang perlu membaca dan menulis file inisialisasi. SectionComboBox menyimpan nama node dan IdentComboBox menyimpan nama kunci dari node yang dipilih. Kotak masukan bernama IdentValueEdit menyimpan nilai kata kunci yang sesuai. Tombol perintah modifikasi bernama CmdChang dapat digunakan untuk mengubah nilai kata kunci. Setelah modifikasi, gunakan tombol perintah penyimpanan bernama CmdSave untuk menyimpan nilai kata kunci yang dimodifikasi ke dalam file inisialisasi terkait. Nama unit yang sesuai dengan formulir diatur ke IniUnit, nama formulir diatur ke IniForm, dan tata letak formulir seperti yang ditunjukkan pada Gambar 1 di bawah ini:
⒉ Di bagian antarmuka unit IniUnit, gunakan penggunaan inifiles; untuk menunjukkan nama unit yang ditentukan oleh kelas TiniFile untuk direferensikan. Dan tentukan objek kelas TiniFile di bagian deskripsi variabel, seperti
var IniFile: TiniFile;
⒊ Tetapkan prosedur acara OnCreate pada formulir. Gunakan fungsi Buat anggota kelas TIniFile untuk membuat objek TIniFile, gunakan objek ini untuk membaca dan menulis file inisialisasi rdfnt.ini di direktori d:ucdos, dan membaca semua node dalam file inisialisasi ke dalam kotak daftar kombinasi SectionComboBox melalui fungsi anggota ReadSections(), gunakan fungsi anggota ReadSection() untuk membaca semua kata kunci di node pertama ke dalam IdentComboBox Dalam kotak daftar gabungan, gunakan fungsi anggota ReadString() untuk mengirimkan nilai kata kunci pertama ke kotak input IdentValueEdit.
⒋ Buat proses event OnChange dari kotak daftar gabungan SectionComboBox. Saat memilih item yang berbeda dalam kotak daftar (yaitu, nama simpul yang berbeda), gunakan fungsi anggota ReadSection() untuk membaca semua kata kunci dalam simpul yang dipilih ke dalam kotak daftar gabungan IdentComboBox, dan gunakan fungsi anggota ReadString() untuk membaca yang pertama Nilai kata kunci dikirim ke kotak input IdentValueEdit.
⒌ Tetapkan proses acara OnChange dari kotak daftar kombinasi IdentComboBox. Saat memilih item yang berbeda (yaitu, nama kata kunci yang berbeda) di kotak daftar, gunakan fungsi anggota ReadString() untuk mengirimkan nilai kata kunci ke dalam kotak masukan IdentValueEdit.
⒍ Buat proses acara OnClick dari tombol perintah CmdChang. Jadikan konten di kotak masukan IdentValueEdit dapat dimodifikasi (kotak masukan IdentValueEdit tidak dapat diubah tanpa menekan tombol perintah), dan atur tombol perintah CmdSave agar valid, sehingga nilai kata kunci yang dimodifikasi dapat disimpan dalam file inisialisasi terkait.
⒎ Buat proses acara OnClick dari tombol perintah CmdSave. Jika nilai kata kunci telah berubah, panggil fungsi anggota WriteString() untuk menyimpan nilai kata kunci yang diubah ke disk.
⒏ Buat prosedur acara OnDestroy pada formulir. Ketika formulir gagal, objek TIniFile yang dibuat dilepaskan untuk melepaskan sumber daya sistem yang digunakan oleh objek tersebut.
Pada titik ini, setelah proyek dijalankan, pembacaan dan penulisan file inisialisasi dapat berjalan dengan lancar. Tentu saja, Anda juga dapat menggunakan fungsi anggota EraseSection() untuk menghapus bagian yang ditentukan, dan Anda juga dapat menggunakan fungsi anggota DeleteKey() untuk menghapus kata kunci yang ditentukan. Karena keterbatasan ruang, saya tidak akan memperkenalkannya secara detail di sini. Jika Anda tertarik, Anda bisa merujuk ke bantuan penggunaan Delphi.
Berikut ini adalah kode sumber unit ini:
satuan IniUnit;
antarmuka
kegunaan
Windows, Pesan, SysUtils, Kelas, Grafik, Kontrol, Formulir, Dialog,
StdCtrls, inifiles;
jenis
TIniForm = kelas(TForm)
BagianComboBox: TComboBox;
Label1: Label;
CmdSimpan: Tombol T;
CmdChang: Tombol T;
IdentComboBox: TComboBox;
IdentValueEdit: TEdit;
Label2: TLabel;
Label3: Label;
prosedur FormCreate(Pengirim: TObject);
procedure SectionComboBoxChange(Pengirim: TObject);
prosedur FormDestroy(Pengirim: TObject);
prosedur CmdChangClick(Pengirim: TObject);
prosedur CmdSaveClick(Pengirim: TObject);
procedure IdentComboBoxChange(Pengirim: TObject);
pribadi
{Deklarasi pribadi}
publik
{Pernyataan publik}
akhir;
var
IniForm: TIniForm;
{Baca dan tulis file inisialisasi Windows melalui kelas TIniFile di Delphi}
File Ini: File TIni;
pelaksanaan
{$R *.DFM}
procedure TIniForm.FormCreate(Pengirim: TObject);
mulai
{ Gunakan fungsi Buat anggota kelas TIniFile untuk membuat pasangan TIniFile
Object, objek ini digunakan untuk membaca dan menulis file rdfnt.ini pada direktori d:ucdos.
Jika file yang akan dibaca dan ditulis ada di direktori Windows (seperti system.ini),
Anda dapat menulis nama file secara langsung tanpa menentukan jalurnya}
IniFile:=TIniFile.Create('d:ucdos dfnt.ini');
{ Semua konten dalam file inisialisasi system.ini terkait dengan objek TIniFile
Nama bagian dengan bagian (yaitu, bagian yang diapit tanda kurung []) dikirim ke grup drop-down
Kotak daftar kombo BagianComboBox}
BagianComboBox.Clear;
IniFile.ReadSections(SectionComboBox.Items);
{Pilih nama bagian pertama dari file system.ini}
BagianComboBox.ItemIndex:=0;
BagianComboBoxChange(Pengirim);
CmdSave.Enabled:=Salah;
akhir;
{Item yang sesuai di bagian yang dipilih di kotak daftar kombo IniComboBox
Variabel dan nilai terkait dikirim ke editor teks multi-baris IniMemo}
procedure TIniForm.SectionComboBoxChange(Pengirim: TObject);
mulai
IdentComboBox.Hapus;
IniFile.ReadSection(SectionComboBox.Teks,
IdentComboBox.Item);
IdentComboBox.ItemIndex:=0;
IdentComboBoxChange(Pengirim);
akhir;
procedure TIniForm.IdentComboBoxChange(Pengirim: TObject);
mulai
IdentValueEdit.Enabled:=Salah;
{Baca nilai kata kunci yang dipilih}
IdentValueEdit.Teks:=
IniFile.ReadString(BagianComboBox.Teks,
IdentComboBox.Teks,');
akhir;
prosedur TIniForm.CmdChangClick(Pengirim: TObject);
mulai
CmdSave.Enabled:=Benar;
IdentValueEdit.Enabled:=Benar;
IdentValueEdit.SetFocus;
akhir;
prosedur TIniForm.CmdSaveClick(Pengirim: TObject);
mulai
jika IdentValueEdit.Modified maka mulailah
IniFile.WriteString(BagianComboBox.Teks,
IdentComboBox.Teks,
IdentValueEdit.Teks);
akhir;
IdentValueEdit.Enabled:=Salah;
CmdSave.Enabled:=Salah;
akhir;
prosedur TIniForm.FormDestroy(Pengirim: TObject);
mulai
IniFile.Free; {lepaskan objek yang dibuat}
akhir;
akhir.
Metode di atas telah melewati debugging menggunakan Delphi 3.0 pada Windows 95.