22-08-2012, 12:29 PM
السلام عليكم ورحمة الله وبركاته
خاصية هامة للغاية وعلامة جيدة علي مهارة المبرمج هي قدرة برنامجه علي حفظ إعدادت المستخدم وتحميلها عند بدء البرنامج في كل مرة
هذه الفئة تسهل العملية بشكل كبير بدلا من أن يضطر المبرمج لأستخدام ملفات xml مثلا
هذه الوحدة من ضمن مكتبات Free Component Libirary FCL للمترجم FreePascal
يتم حفظ اﻷعدادت في ملف نصي بامتداد ini في مكان يحدده المبرمج
* نتعرف أولا علي بنية ملف ini اللذي تحفظ فيه اﻷعدادت ويتكون من أقسام وكل قسم يحتوي علي أزواج كالتالي
كود :
[Section 1]
key_1 = Value_1
key_2 = Value_2
key_3 = Value_3
[Section2]
key_4 = Value_4
key_5 = Value_5
key_6 = Value_6* كيفية الاستخدام
أولا عليك اضافة الوحدة INIFiles إلي قسم uses ثم إنشاء كائن من الفئة TINIFile
كود :
var
INI : TINIFile;
begin
INI := TINIFile.Create('C:\config.ini');ليس عليك أن تنشئه يدويا
لقراءة قيمة من الملف
كود :
myValue_1 = INI.ReadString('Section1','key_1','');يتم تمرير ثلاث معاملات للدالة :
- اسم القسم Section1
- اسم المفتاح Key_1
- قيمة افتراضية في حالة عدم وجود قسم أو مفتاح باﻷسم المذكور
بمعني أنه إذا كان لا يوجد قسم اسنه Section1 أو مفتاح باسم key_1 سيتم اسناد القيمة '' للمتغير myValue_1
وبالمثل يمكنك إضافة أقسام أو مفاتيح جديدة أو حتي انشاء ملف ini غير موجود بالدوال
WriteString , WriteINteger , WriteFloat , WriteBool
كود :
INI.WriteString('Section1','key_1',value_11);مثال :
PHP كود :
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes,IniFiles
{ you can add units after this };
var
INI:TIniFile;
name,mail : string;
age:Integer;
married:Boolean;
procedure ReadData;
begin
name := INI.ReadString('General','Name','Ahmed');
mail := INI.ReadString('General','EMail','test@example.com');
age:=INI.ReadInteger('General','Age',31);
WriteLn(name);
WriteLn(mail);
WriteLn(age);
end;
procedure WriteData;
begin
INI.WriteString('General','Name','Ahmed Atalla');
INI.WriteString('General','EMail','me@mysite.com');
INI.WriteInteger('General','Age',50);
end;
begin
INI:=TIniFile.Create('config.ini'); //will save the config file in the project Directory
//WriteData;
ReadData;
end.
عند تشغيل المثال لأول مرة كما هو حيث لا وجود لملف config.ini في مجلد المشروع فإن دالة ReadData سوف تطبع القيم اﻷفتراضية اللتي تم تمريرها
كود :
Ahmed
test@example.com
31كود :
Ahmed Atalla
me@mysite.com
50وستجد ملف config.ini في مجلد المشروع يمكنك فتحه بأي برنامج للنصوص واﻷطلاع علي بنيته
المرجع
كود :
http://wiki.freepascal.org/Using_INI_Files/arتم بحمد الله


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)