من أجل تسهيل استخدام المستخدم وجعل النظام مرنًا، تقوم معظم تطبيقات Windows بتسجيل الاختيارات التي قام بها المستخدم ومعلومات النظام المختلفة التي تم تغييرها في ملف التهيئة (INI). ولذلك، عندما تتغير بيئة النظام، يمكن تعديل ملف INI مباشرة دون تعديل البرنامج. يمكن ملاحظة أن ملف INI مهم جدًا لوظائف النظام. ستقدم هذه المقالة كيفية قراءة ملفات INI وكتابتها عند تطوير تطبيقات Windows باستخدام Visual Basic for Windows (المشار إليه فيما يلي باسم VB).
ملف INI هو ملف نصي يتكون من عدة أقسام، تحت كل عنوان بين قوسين، توجد عدة كلمات رئيسية (keyWord) تبدأ بكلمة واحدة وعلامة يساوي دالة، تحدد القيمة الموجودة على الجانب الأيمن من علامة المساواة وضع التشغيل للكلمة الأساسية. وصيغتها العامة هي كما يلي:
[القسم 1]
الكلمة الأساسية 1 = القيمة
الكلمة الأساسية 2 = القيمة 2
…
[القسم 2]
الكلمة الأساسية 1 = القيمة 1
الكلمة الأساسية 2 = القيمة 2
…
من بينها، إذا لم يكن هناك شيء على الجانب الأيمن من علامة المساواة (أي أن القيمة فارغة)، فهذا يعني أن تطبيق Windows قد حدد قيمة افتراضية للكلمة الأساسية إذا كانت الكلمة الأساسية (أو جزء كامل منها). لم يتم العثور عليها في الملف بأكمله، مما يعني أيضًا أنه تم تحديد قيم افتراضية لها. الترتيب الذي تظهر به الأجزاء غير ذي صلة، كما هو الحال مع ترتيب الكلمات الرئيسية داخل كل جزء.
عادة ما تكون هناك طريقتان لقراءة وكتابة ملفات INI: الأولى هي تحريرها باستخدام "المفكرة" في نظام التشغيل Windows، وهو أمر بسيط نسبيًا ولا يحتاج إلى مزيد من الوصف؛ والأخرى هي قراءة ملفات INI وكتابتها بواسطة أحد تطبيقات Windows، عادةً عن طريق تشغيل التطبيق تتم قراءة المعلومات الموجودة في ملف INI عند الخروج من التطبيق، ويتم حفظ بعض التعديلات التي أجراها المستخدم على بيئة التشغيل عند الخروج من التطبيق.
نوع قيمة الكلمات الرئيسية هو في الغالب سلسلة أو عدد صحيح، ويجب قراءته وكتابته في حالتين. من أجل جعل البرنامج قابلاً للصيانة ومحمولاً، من الأفضل تغليف قراءة وكتابة ملفات INI في وحدة نمطية (RWINI.BAS)، وإنشاء وظائف GetIniS وGetIniN بالإضافة إلى SetIniS وSetIniN في RWI-NI.BAS أثناء العملية، تحتاج إلى استخدام وظائف "GetPRivateprofileString" و"GetPrivateProfileInt" و"WritePrivateProfileString" الخاصة بـ Windows API في هذه الوظائف والعمليات.
رمز البرنامج لوحدة RWINI.BAS هو كما يلي:
قم بتعريف وظائف Windows API المستخدمة في قسم التصريح العام:
DeclareFunctionGetprivateprofileStringLib"Ker-nel"(ByVallpAppNameAsString، ByVallpKeyNameAsString، ByVallpDefaultAsString، ByVallpRetrm-StringAsString، ByValcbReturnStringAsInteger، ByValFilenameAsString)AsInteger
DeclareFunctionGetPrivatePfileIntLib"Kernel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsInteger, ByValFilenameAsString)AsInteger
DeclareFuncitonWritePrivateprofileStringLib"Kernel"(ByVallpapplicationNameAsString، ByVallpKeyNameAsString، ByVallpStringAsString، ByVallplFileNameAsString)AsInteger
الدالةGetIniS(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$(ResultString, I, 1)
EndIf
التالي
آخر
Temp=WritePrivateProfilesString(sectionname,KeyWord,DefString,ppProfileName())
'اكتب القيم الافتراضية إلى ملف INI
s=DefString
EndIf
GetIniS=s
وظيفة النهاية
دالة جيتينين (ByValSectionNameAsString، ByValKeyWordAsString، ByValDefValue
AsIneger)AsInteger
DimdAsLong,sAsString
d=DefValue
GetIniN=GetPrivateProfileInt(SectionName,
الكلمة الأساسية، DefValue، ppProfileName ())
Ifd<>DefValueThen
ق = ""& د
d=WritePrivateProfileString(SectionName,
الكلمة الأساسية، اسم الملف الشخصي ())
EndIf
وظيفة النهاية
SubSetIniS (ByValSectionNameAsString، BtVaKeyWordAsString، ByValValStr
سلسلة)
ديمريس
res=WritePrivateprofileString(SectionName,KeyWord,ValStr,AppProfileName())
EndSub
SubSetIniN(ByValSectionNameAsString، ByValKeyWordAsString، ByValValInt
كعدد صحيح)
ديمريس، ق $
ق$=ستر$(فالينت)
res=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName())
EndSub
sectionName هو عنوان كل قسم، KeyWord هي الكلمة الأساسية، DefValue في GetIniS وGetIniN هي القيمة الافتراضية للكلمة الأساسية، وValStr وValInt في SetIniS وSetIniN هي قيم الكلمة الأساسية المراد كتابتها في ملف INI. من أجل توضيح كيفية استخدام الوظائف والإجراءات المذكورة أعلاه بشكل أفضل، يتم تقديم مثالين أدناه.
مثال 1:
يتطلب تطوير التطبيقات عادةً استخدام قواعد البيانات والملفات الأخرى، ويجب ألا تكون أدلة هذه الملفات (بما في ذلك المسارات وأسماء الملفات) ثابتة في البرنامج، ولكن يتم حفظها في ملفات INI، والتي تتم قراءتها من ملفات INI عندما يكون البرنامج جاهزًا. جري. الكود لقراءة ملف قاعدة البيانات هو كما يلي:
DimDatabasenameAsString
Databasename=GetIniS("قاعدة البيانات"، "الموظف"، "")
IfDatabaseName = ""ThenDatabaseName = InputBox ("الرجاء إدخال دليل قاعدة البيانات "الموظف")،
App.Title)" يمكن أيضًا تحديده من خلال "مربع حوار الملف"
OnErrorResumeNext
Setdb=OpenDatabas(DatabaseName)
إذاErr<>0ثم
MsgBox "فشل فتح قاعدة البيانات!", MB-
ICONSTOP، App.Title:GotoErrorProcessing
آخر
SetIniS"Database"، "Employee"، DatabaseName
EndIf
OnErrorGoTo0
…
مثال 2:
لتسهيل عمليات المستخدم، في بعض الأحيان يكون من الضروري حفظ معلومات معينة عن واجهة المستخدم، مثل ارتفاع النافذة وعرضها. عند تحميل النموذج، اقرأ ارتفاع النموذج وعرضه من ملف INI. عند إلغاء تحميل النموذج، قم بتخزين الارتفاع والعرض الحاليين للنموذج في ملف INI.
SubForm1_Load()
…
Forml.Height=GetIniN("النموذج 1"، "الارتفاع"، 6000)
Form1.Width=GetIniN("Form1"، "الارتفاع"، 4500)
EndSub
…
SubForm1_Unload()
…
SetIniN"Form1"، "Height"، Me.Height
SetIniN"Form1،"Width"،Me.Width
…
EndSub->