เพื่ออำนวยความสะดวกในการใช้งานของผู้ใช้และทำให้ระบบมีความยืดหยุ่น แอพพลิเคชั่น Win-dows ส่วนใหญ่จึงบันทึกตัวเลือกที่ผู้ใช้ทำและข้อมูลระบบที่เปลี่ยนแปลงต่างๆ ไว้ในไฟล์การเตรียมใช้งาน (INI) ดังนั้นเมื่อสภาพแวดล้อมของระบบเปลี่ยนแปลง ไฟล์ INI สามารถแก้ไขได้โดยตรงโดยไม่ต้องแก้ไขโปรแกรม จะเห็นได้ว่าไฟล์ INI มีความสำคัญต่อการทำงานของระบบ บทความนี้จะแนะนำวิธีการอ่านและเขียนไฟล์ INI เมื่อพัฒนาแอปพลิเคชัน Windows โดยใช้ Visual Basic สำหรับ Windows (ต่อไปนี้จะเรียกว่า VB)
ไฟล์ INI เป็นไฟล์ข้อความที่ประกอบด้วยหลายส่วน ใต้ชื่อวงเล็บแต่ละคำ มีคีย์เวิร์ดหลายคำ (คีย์เวิร์ด) ที่ขึ้นต้นด้วยคำเดียวและเครื่องหมายเท่ากับ คีย์เวิร์ดแต่ละอันจะควบคุมลักษณะเฉพาะของแอปพลิเคชัน ฟังก์ชัน ค่าที่อยู่ทางด้านขวาของเครื่องหมายเท่ากับจะระบุโหมดการทำงานของคำสำคัญ รูปแบบทั่วไปมีดังนี้:
[ส่วนที่ 1]
คำหลัก1=ค่า
คำหลัก2=ค่า2
-
[ส่วนที่ 2]
คำหลัก1=ค่า1
คำหลัก2=ค่า2
-
หากไม่มีสิ่งใดทางด้านขวาของเครื่องหมายเท่ากับ (นั่นคือค่าว่าง) แสดงว่าแอปพลิเคชัน Windows ได้ระบุค่าเริ่มต้นสำหรับคำหลัก หากเป็นคำหลัก (หรือบางส่วน) ไม่พบในไฟล์ทั้งหมด ซึ่งหมายความว่ามีการระบุค่าเริ่มต้นไว้ด้วย ลำดับที่ส่วนต่างๆ ปรากฏนั้นไม่เกี่ยวข้อง เช่นเดียวกับลำดับของคำหลักในแต่ละส่วน
โดยปกติมีสองวิธีในการอ่านและเขียนไฟล์ INI วิธีหนึ่งคือการแก้ไขด้วย "Notepad" ใน Windows ซึ่งค่อนข้างง่ายและไม่ต้องการคำอธิบายเพิ่มเติม อีกวิธีคือการอ่านและเขียนไฟล์ INI ด้วยแอปพลิเคชัน Windows โดยปกติจะ การรันแอปพลิเคชัน ข้อมูลในไฟล์ INI จะถูกอ่านเมื่อออกจากแอปพลิเคชัน และการแก้ไขบางอย่างที่ผู้ใช้ทำกับสภาพแวดล้อมที่ทำงานอยู่จะถูกบันทึกเมื่อออกจากแอปพลิเคชัน
ประเภทค่าของคำหลักส่วนใหญ่เป็นสตริงหรือจำนวนเต็ม และควรอ่านและเขียนได้ใน 2 สถานการณ์ เพื่อให้โปรแกรมสามารถบำรุงรักษาและพกพาได้ วิธีที่ดีที่สุดคือสรุปการอ่านและการเขียนไฟล์ INI ในโมดูล (RWINI.BAS) และสร้างฟังก์ชัน GetIniS และ GetIniN รวมถึง SetIniS และ SetIniN ใน RWI-NI.BAS . กระบวนการ คุณต้องใช้ฟังก์ชัน "GetPRivateprofileString", "GetPrivateProfileInt" และ "WritePrivateProfileString" ของ Windows API ในฟังก์ชันและกระบวนการเหล่านี้
รหัสโปรแกรมของโมดูล RWINI.BAS เป็นดังนี้:
ประกาศฟังก์ชัน Windows API ที่ใช้ในส่วน General-Declearation:
DeclareFunctionGetprivateprofileStringLib "Ker-nel" (ByVallpAppNameAsString, ByValpKeyNameAsString, ByVallpDefaultAsString, ByVallpRetrm-StringAsString, ByValcbReturnStringAsInteger, ByValFilenameAsString) AsInteger
ประกาศ FunctionGetPrivatePfileIntLib "เคอร์เนล" (ByValpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsInteger, ByValFilenameAsString) AsInteger
ประกาศFuncitonWritePrivateprofileStringLib "Kernel" (ByVallpapplicationNameAsString, ByVallpKeyNameAsString, ByVallpStringAsString, ByVallplFileNameAsString)AsInteger
FunctionGetIniS (ByValSectionNameAsString, ByValKeyWordAsString, ByValDefStringAsString) AsString
DimResultStringAsString*144,TempAsInteger
DimsAsString, iAsInteger
Temp=GetPrivateProfileString(SectionName,KeyWord,"",ResultString,144,AppProfileName())
'ดึงค่าของคำหลัก
IfTemp>0แล้ว 'ค่าคำหลักไม่ว่างเปล่า
ส = ""
ฟอริ=1ถึง144
IfAsc(Mid$(ResultString,I,1))=0แล้ว
ทางออกสำหรับ
อื่น
s=s&Mid$(สตริงผลลัพธ์, I, 1)
สิ้นสุดถ้า
ต่อไป
อื่น
Temp=WritePrivateProfilesString(ชื่อส่วน,KeyWord,DefString,ppProfileName())
'เขียนค่าเริ่มต้นไปยังไฟล์ INI
s=DefString
สิ้นสุดถ้า
GetIniS=s
EndFunction
FunctionGetIniN (ByValSectionNameAsString, ByValKeyWordAsString, ByValDefValue
AsIneger) AsInteger
DimdAsLong,sAsString
d=ค่าดีฟ
GetIniN=GetPrivateProfileInt(ชื่อส่วน
คำสำคัญ, DefValue, ppProfileName())
Ifd<>DefValueแล้ว
s=""&d
d=WritePrivateProfileString(ชื่อมาตรา,
คำสำคัญ,s,AppProfileName())
สิ้นสุดถ้า
EndFunction
SubSetIniS (ByValSectionNameAsString, BtVaKeyWordAsString, ByValValStr
AsString)
ดิมเรส
res=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
สิ้นสุดย่อย
SubSetIniN (ByValSectionNameAsString, ByValKeyWordAsString, ByValValInt
เป็นจำนวนเต็ม)
ดิมเรส,s$
s$=Str$(ValInt)
res=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
สิ้นสุดย่อย
SectionName คือชื่อของแต่ละส่วน KeyWord คือคีย์เวิร์ด DefValue ใน GetIniS และ GetIniN คือค่าเริ่มต้นของคีย์เวิร์ด และ ValStr และ ValInt ใน SetIniS และ SetIniN คือค่าของคีย์เวิร์ดที่จะเขียนลงในไฟล์ INI เพื่อให้อธิบายวิธีใช้ฟังก์ชันและขั้นตอนข้างต้นได้ดียิ่งขึ้น จึงมีตัวอย่าง 2 รายการด้านล่างนี้
ตัวอย่างที่ 1:
การพัฒนาแอปพลิเคชันมักจะต้องใช้ฐานข้อมูลและไฟล์อื่น ๆ ไม่ควรแก้ไขไดเร็กทอรีของไฟล์เหล่านี้ (รวมถึงพา ธ และชื่อไฟล์) ในโปรแกรม แต่จะถูกบันทึกไว้ในไฟล์ INI ซึ่งจะถูกอ่านจากไฟล์ INI เมื่อโปรแกรมถูก วิ่ง. รหัสในการอ่านไฟล์ฐานข้อมูลมีดังนี้:
DimDatabasenameAsString
Databasename=GetIniS("ฐานข้อมูล", "พนักงาน", "")
IfDatabaseName=""ThenDatabaseName=InputBox("กรุณาป้อนไดเร็กทอรีของฐานข้อมูล "พนักงาน"),
App.Title)' สามารถเลือกได้ผ่าน "กล่องโต้ตอบไฟล์"
หนึ่งข้อผิดพลาดดำเนินการต่อต่อไป
Setdb=OpenDatabas(ชื่อฐานข้อมูล)
ถ้าผิดพลาด<>0แล้ว
MsgBox "ไม่สามารถเปิดฐานข้อมูลได้!", MB-
ICONSTOP ชื่อแอป: GotoErrorProcessing
อื่น
SetIniS"ฐานข้อมูล", "พนักงาน", ชื่อฐานข้อมูล
สิ้นสุดถ้า
OnErrorGoTo0
-
ตัวอย่างที่ 2:
เพื่ออำนวยความสะดวกในการดำเนินงานของผู้ใช้ บางครั้งจำเป็นต้องบันทึกข้อมูลบางอย่างของอินเทอร์เฟซผู้ใช้ เช่น ความสูงและความกว้างของหน้าต่าง เมื่อโหลดแบบฟอร์ม ให้อ่านความสูงและความกว้างของแบบฟอร์มจากไฟล์ INI เมื่อยกเลิกการโหลดแบบฟอร์ม ให้เก็บความสูงและความกว้างของแบบฟอร์มปัจจุบันไว้ในไฟล์ INI ดังนี้
SubForm1_Load()
-
Forml.Height=GetIniN("แบบฟอร์ม 1", "ความสูง", 6000)
Form1.Width=GetIniN("Form1", "ความสูง",4500)
สิ้นสุดย่อย
-
SubForm1_Unload()
-
SetIniN"Form1", "ส่วนสูง", ฉันส่วนสูง
SetIniN"Form1,"ความกว้าง",ฉัน.ความกว้าง
-
สิ้นสุดย่อย ->