1. จำเป็นต้องเข้าใจโครงสร้างของไฟล์ INI:
;แสดงความคิดเห็น
[ชื่อส่วน]
คำหลัก=ค่า
-
ไฟล์ INI อนุญาตให้มีหลายส่วน และแต่ละส่วนอนุญาตให้ใช้คำหลักหลายคำ "=" ตามด้วยค่าของคำหลัก
ค่ามีสามประเภท: สตริง ค่าจำนวนเต็ม และค่าบูลีน สตริงถูกจัดเก็บไว้ในไฟล์ INI โดยไม่มีเครื่องหมายคำพูด ค่าจริงบูลีนจะแสดงด้วย 1 และค่าเท็จบูลีนแสดงด้วย 0
ความคิดเห็นเริ่มต้นด้วยเครื่องหมายอัฒภาค ";"
2. คำจำกัดความ
1. เพิ่ม IniFiles ในส่วนการใช้งานของอินเทอร์เฟซ
2. เพิ่มบรรทัดในส่วนคำจำกัดความตัวแปร Var:
myinifile:Tinifile;
จากนั้น คุณสามารถสร้าง เปิด อ่าน เขียน และการดำเนินการอื่นๆ บนตัวแปร myinifile
3. เปิดไฟล์ INI
myinifile:=Tinifile.create('program.ini');
บรรทัดคำสั่งด้านบนจะสร้างการเชื่อมต่อระหว่างตัวแปร myinifile และไฟล์เฉพาะ program.ini จากนั้น ค่าของคีย์เวิร์ดในไฟล์ program.ini จะสามารถอ่านและเขียนผ่านตัวแปร myinifile ได้
เป็นที่น่าสังเกตว่าหากชื่อไฟล์ในวงเล็บไม่ได้ระบุเส้นทาง ไฟล์ Program.ini จะถูกจัดเก็บไว้ในไดเร็กทอรี Windows วิธีการจัดเก็บไฟล์ Program.ini ในไดเร็กทอรีปัจจุบันของแอปพลิเคชันคือการระบุ เส้นทางที่สมบูรณ์และชื่อไฟล์ สองคำสั่งต่อไปนี้สามารถบรรลุฟังก์ชันนี้ได้
สามารถ:
ชื่อไฟล์:=ExtractFilePath(Paramstr(0))+'program.ini';
myinifile:=Tinifile.Create(ชื่อไฟล์);
4. อ่านค่าของคำสำคัญ
สำหรับประเภทข้อมูลสามประเภทคือสตริง ค่าจำนวนเต็ม และค่าบูลีนที่รองรับโดยไฟล์ INI คลาส TINIfiles จัดเตรียมวิธีอ็อบเจ็กต์ที่แตกต่างกันสามวิธีเพื่ออ่านค่าของคีย์เวิร์ดในไฟล์ INI
สมมติว่าตัวแปรที่กำหนด vs, vi และ vb เป็นประเภทสตริง จำนวนเต็ม และบูลีนตามลำดับ
vs:=myinifile.Readstring('ชื่อส่วน','คำหลัก',ค่าเริ่มต้น);
vi:=myinifile.Readinteger('ชื่อส่วน','คำหลัก',ค่าเริ่มต้น);
vb:=myinifile.Readbool('ชื่อส่วน','คำหลัก',ค่าเริ่มต้น);
ค่าเริ่มต้นคือค่าเริ่มต้นที่ส่งคืนเมื่อไม่มีคำสำคัญในไฟล์ INI
5. เขียนไฟล์ INI
ในทำนองเดียวกัน คลาส TInifile ยังมีวิธีอ็อบเจ็กต์ที่แตกต่างกันสามวิธีในการเขียนคีย์เวิร์ดสตริง จำนวนเต็ม และประเภทบูลีนลงในไฟล์ INI
myinifile.writestring('ชื่อส่วน', 'คำสำคัญ', ตัวแปรหรือค่าสตริง);
myinifile.writeinteger('ชื่อส่วน', 'คำสำคัญ', ตัวแปรหรือค่าจำนวนเต็ม);
myinifile.writebool('ชื่อส่วน', 'คำหลัก', ตัวแปรหรือจริงหรือเท็จ);
เมื่อไม่มีไฟล์ INI คำสั่งข้างต้นจะสร้างไฟล์ INI โดยอัตโนมัติ
6. ลบคำหลัก
นอกเหนือจากการเพิ่มคีย์เวิร์ดโดยใช้วิธีเขียนแล้ว คลาส Tinifile ยังมีวิธีอ็อบเจ็กต์สำหรับการลบคีย์เวิร์ดด้วย:
myinifile.DeleteKey('ชื่อส่วน','คำหลัก');
7. การดำเนินงานส่วน
การเพิ่มส่วนสามารถทำได้ด้วยวิธีเขียน และการลบส่วนสามารถทำได้ด้วยวิธีอ็อบเจ็กต์ต่อไปนี้:
myinifile.EraseSection('ชื่อส่วน');
นอกจากนี้ คลาส Tinifile ยังมีวิธีอ็อบเจ็กต์สามวิธีเพื่อดำเนินการในส่วนต่างๆ:
myinifile.readsection('section name', TStrings Variable); สามารถอ่านชื่อคีย์เวิร์ดทั้งหมดในส่วนที่ระบุลงในตัวแปรรายการสตริงได้
myinifile.readsections(ตัวแปร TStrings); สามารถอ่านชื่อส่วนทั้งหมดในไฟล์ INI ลงในตัวแปรรายการสตริงได้
myinifile.readsectionvalues('section name', TStrings Variable); สามารถอ่านทุกบรรทัด (รวมถึงคีย์เวิร์ด, =, ค่า) ของส่วนที่ระบุในไฟล์ INI ลงในตัวแปรรายการสตริง
8. ปล่อย
ปล่อย myinifile ในตำแหน่งที่เหมาะสมพร้อมกับคำสั่งต่อไปนี้:
myinifile.disstory;
9. ตัวอย่าง
ต่อไปนี้ใช้ตัวอย่างง่ายๆ (ดังแสดงในรูป) เพื่อสาธิตวิธีการสร้าง อ่าน และจัดเก็บไฟล์ INI ไฟล์ myini.ini มีส่วน "พารามิเตอร์ของโปรแกรม" และคำหลักสามคำ ได้แก่ ชื่อผู้ใช้ (สตริง) สถานะผู้ใช้อย่างเป็นทางการ (ค่าบูลีน) และเวลาที่ผ่านไป (ค่าจำนวนเต็ม) โปรแกรมอ่านข้อมูลนี้เมื่อสร้างแบบฟอร์มและเขียนไฟล์ myini.ini เมื่อมีการเผยแพร่แบบฟอร์ม
รายการโปรแกรมที่มาที่แนบมา
หน่วยหน่วย1;
อินเตอร์เฟซ
การใช้งาน
Windows, ข้อความ, SysUtils, ตัวแปร, คลาส, กราฟิก, การควบคุม, แบบฟอร์ม,
กล่องโต้ตอบ, IniFiles, StdCtrls, ExtCtrls;
พิมพ์
TForm1=คลาส(TForm)
แก้ไข1:Tแก้ไข;
แก้ไข2:Tแก้ไข;
CheckBox1:TCcheckBox;
ตัวจับเวลา 1:ตัวจับเวลา TTimer;
ProcedureFormCreate (ผู้ส่ง: TObject);
ขั้นตอน FormDestroy (ผู้ส่ง: TObject);
ขั้นตอน Timer1Timer (ผู้ส่ง: TObject);
ส่วนตัว
{ประกาศความเป็นส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
var
แบบฟอร์ม 1:TForm1;
myinifile:Tinifile;
การดำเนินการ
{$R*.dfm}
ขั้นตอน TForm1.FormCreate (ผู้ส่ง: TObject);
var
ชื่อไฟล์:สตริง;
เริ่ม
ชื่อไฟล์:=ExtractFilePath(paramstr(0))+'myini.ini';
myinifile:=TInifile.Create(ชื่อไฟล์);
edit1.Text:=myinifile.readstring('พารามิเตอร์ของโปรแกรม','ชื่อผู้ใช้','ชื่อผู้ใช้เริ่มต้น');
edit2.text:=inttostr(myinifile.readinteger('พารามิเตอร์ของโปรแกรม','เวลาทำงานที่ผ่านไป',0));
checkbox1.Checked:=myinifile.readbool('พารามิเตอร์ของโปรแกรม','ไม่ว่าจะเป็นผู้ใช้อย่างเป็นทางการ',False);
จบ;
ขั้นตอน TForm1.FormDestroy (ผู้ส่ง: TObject);
เริ่ม
myinifile.writestring('พารามิเตอร์ของโปรแกรม','ชื่อผู้ใช้', edit1.Text);
myinifile.writeinteger('พารามิเตอร์ของโปรแกรม','เวลาทำงานที่ผ่านไป',strtoint(edit2.text));
myinifile.writebool('พารามิเตอร์ของโปรแกรม', 'เป็นผู้ใช้อย่างเป็นทางการหรือไม่', checkbox1.Checked);
myinifile.ทำลาย;
จบ;
ขั้นตอน TForm1.Timer1Timer (ผู้ส่ง: TObject);
เริ่ม
edit2.Text:=inttostr(strtoint(edit2.text)+1);
จบ;
จบ.
ตัวอย่างนี้ผ่านการดีบักภายใต้ Delphi6.0+WinXP