تبليغاتX
برنامه نویسی با دلفی

برنامه نویسی با دلفی

فایل های INI در دلفی

فایل های INI در دلفی
 

فایل های .INI دارای ساختاری بر اساس فایلهای متنی هستند و برای نگهداری اطلاعات پیکر بندی برنامه های کاربردی استفاده میشوند که هم براحتی بوسیله ما قابل ویرایش هستند و هم بوسیله یک ساختار ساده در هر برنامه ساده قابل دسترسی هستند .

بدلیل اینکه ویندوز داری Registry هست کسانی که از ویندوز استفاده میکنند آشنایی کمی با فایلهای .ini دارند ولی در ویندوز هنوز هم از فایلهای .ini استفاده میشود. مثل Win.ini و System.ini . ویندوز از این فایلها برای ذخیره اطلاعات مهمی از جمله اطلاعات پیکربندی استفاده میکند که براحتی قابل پاک شدن ، ویرایش و دیدن هستند.  بسیاری از برنامه های تحت ویندوز برای ذخیره اطلاعات پیکربندی خود از Registry  استفاده میکنند در حالیکه استفاده از فایلهای .ini هم سریعتر و هم ایمن تر است . یک مثال ساده برای استفاده از فایلهای  .ini ذخیره اندازه ، حالت و موقعیت فرم برنامه شماست . بطور کلی هر چیزی که شما در رجیستری ذخیره میکنید میشود در فایلهای .ini ذخیره کرد .

 

ساختار فایلهای .ini

فایلهای .ini نوعی فایل متنی هستند که به بخشهای محدود به 64 کیلو بایت (Section) تقسیم شدند که هر بخش میتواند دارای چند کلید (Key) باشد و هر کلید میتواند دارای صفر یا چند مقدار (Value) باشد . مثال:

[SectionName]
keyname=value
;comment
keyname=value

         نام هر بخش درون کروشه قرار گرفته و در باید در خط اول هر بخش قرار داشته باشد . نام بخشها و نام کلیدها نمیتوانند کاراکتر فاصله داشته باشند. بعد از نام کلیدها علامت = قرار میگیرد که میتواند قبل و بعد از آن کاراکتر فاصله قرار بگیرد . اگر بخشهایی با نام یکسان در یک فایل یا کلیدهایی با نام یکسان در یک بخش قرار داشته باشند مقدار آخر بر بقیه مقدارهای یکسان غالب است .

یک کلید میتواند دارای مقادیری از نوعهای String , Integer , Boolean باشد. دلفی از فایلهایINI در خیلی وضعیتها استفاده میکند. برای مثال فایلهای .SDK نوعی فایل هستند مانند ini ها .

 

 کلاس TiniFile

        دلفی برای ذخیره و بازیابی فایلهای ini. کلاس TiniFile را در اختیار ما قرار داده است. این کلاس در یونیت inifiles.pas  قرار گرفته است. قبل از کار کردن با فایلهای .ini لازم است یک مثال راجع به استفاده از این کلاس ببینیم.

 

uses inifiles;

...

var

  IniFile : TIniFile;

begin

  IniFile := TIniFile.Create('myapp.ini');

          این کد یه فایل .ini ایجاد میکند و این فایل را به myapp.ini  ارجاع میدهد . البته این کد فایل را درون پوشه ویندوز ایجاد میکند ولی بهتر این است که برای ذخیره کردن اطلاعاتی از برنامه فایل .ini را درون پوشه برنامه ایجاد کنید . برای این کار باید آدرس کامل فایل را بنویسید . مثال :                 

IniFile := TIniFile.Create('C:\Hattel\myapp.ini'); 

 

          البته میتوانیم از تابع ChangeFileExt هم استفاده کنیم که در این صورت یک فایل با نام فایل برنامه و درون پوشه برنامه ایجاد میکنیم .

IniFile := TIniFile.Create(
ChangeFileExt(
Application.ExeName,'.ini'));

 

 

 خواندن از فایلهای .ini

 

         کلاس TiniFileچندین متد برای خواندن از فایلهای .ini دارند . متد  ReadString برای خواندن مقدارهای رشته ای از یک کلید استفاده میشود. متد ReadInteger, ReadFloat ومتدهای مشابه برای خواندن مقدارهای عددی استفاده میشوند . همه این متدها یک مقدار پیش فرض دارند که وقتی فایل مورد نظر یا کلید و مقدار مورد نظر موجود نباشد استفاده میشود. مثلا ReadString به این صورت بیان میشود.

 function ReadString(const Section, Ident,
Default: String): String; override;
 Section نام بخش ، Ident نام کلید و Default نشان دهنده مقدار پیش فرض است .

 

 

نوشتن در فایلهای .ini

 

برای هر متد خواندن یک متد متناظر برای نوشتن وجود دارد . مثلا  WriteString, WriteBool, WriteInteger و غیره

فرض کنید میخواهیم برنامه ای بنویسیم که تاریخ آخرین استفاده و آخرین موقعیت فرم برنامه را ذخیره کند . پس لازم است یک فایل.ini  با دو بخش داشته باشیم . یک بخش با نام Date برای ذخیره تاریخ و یک بخش با نام Position برای ذخیره آخرین موقیت برنامه. بخش Date شامل کلید Last و بخش Position شامل کلیدهای Top, Left, width, Height .

کلید Last باید از نوع TDateTime و کلیدهای بخش Position باید از نوع عددی باشند.

 

برای نوشتن برنامه رویداد OnCreate فرم اصلی برنامه را بصورت زیر مینویسیم . (فراموش نکنید در بخش Uses یونیت TIniFiles را اضافه کنبد. )

 

procedure TForm1.FormCreate(Sender: TObject);

var

  MyIniFile  : TIniFile;

  LastDate : TDateTime;

begin

  MyIniFile := TIniFile.Create(

             ChangeFileExt(Application.ExeName,'.ini'));

 

  LastDate := MyIniFile.ReadDate('Date', 'Last', Date);

 

  ShowMessage('This program was previously used on '

                               + DateToStr(LastDate));

 

  Form1.Top := MyIniFile.ReadInteger

               ('Position','Top', Form1.Top);

  Form1.Left := MyIniFile.ReadInteger

                ('Position','Left', Form1.Left);

  Form1.Width := MyIniFile.ReadInteger

                 ('Position','Width', Form1.Width);

  Form1.Height := MyIniFile.ReadInteger

                  ('Position','Height', Form1.Height);

 

  MyIniFile.Free;

end;

            با این کد در صورتی که هنگام اجرای برنامه فایل .ini مورد نظر وجود داشته باشد آخرین تاریخ استفاده از برنامه نشان داده میشود و فرم در آخرین موقعیت قبلی قرار میگیرد.

 

          برای ذخیره شدن آخرین تاریخ و موقیت فرم ، رویداد OnClose فرم اصلی برنامه را به این صورت مینویسیم :

 

procedure TForm1.FormClose

           (Sender: TObject; var Action: TCloseAction);

var

  MyIniFile  : TIniFile;

begin

  MyIniFile := TIniFile.Create(

             ChangeFileExt(Application.ExeName,'.ini'));

 

  MyIniFile.WriteDate('Date', 'Last', Date);

 

  With MyIniFile, Form1 do

  begin

    WriteInteger('Position','Top', Top);

    WriteInteger('Position','Left', Left);

    WriteInteger('Position','Width', Width);

    WriteInteger('Position','Height', Height);

  end;

 

  MyIniFile.Free;

end;

           این کد باعث میشود در هنگام بسته شدن برنامه تاریخ و موقعیت فرم در فایل .ini ذخیره شود.

         

 

کار کردن با بخشها

          چندین متد برای کار کردن با بخشها طراحی شدند. برای مثال متد EraseSection یک بخش را بطور کامل از فایل ini حذف میکند. متد های ReadSection نام کلیدهای یک بخش و متد ReadSections نام بخشهای یک فایل را در یک TStringList قرار میدهد. کلاسهای دیگری هم در یونیت Registry وجود دارند از جمله TRegIniFile برای دسترسی ساده به سیستم رجیستری ویندوز بصورت فایلهای ini که استفاده از آنها ساده است.

 

محدودیتها و راه حل ها

          بدلیل اینکه کلاس TIniFile از Windows API استفاده میکند یه محدودیت 64 کیلو بایتی به فایلهای ini تحمیل میشود. در صورتی که احتیاج دارید اطلاعاتی بیشتر از 64 کیلو بایت در فایل ذخیره کنید باید بجای استفاده از TIniFile از TMemIniFile استفاده کنید که در این صورت مشکل محدودیت 64 کیلو بایتی را ندارید.


نوشته شده توسط ابراهیم خدائی در چهارشنبه پانزدهم فروردین 1386 ساعت 2:47 | لینک ثابت |

منوی اصلی

صفحه نخست
آرشيو وبلاگ
پروفایل مدیر وبلاگ
عناوین مطالب وبلاگ
درباره دلفی
نكات مفيد براي كار در محيط دلفي
دلفی NET.
مقدمات دلفی
برنامه ها‎ ‏و مثالهای‎ دلفی
کامپوننتهای دلفی

درباره ی ما


این وبلاگ برای توسعه برنامه نویسی دلفی با ارائه ابزارها و مثالها و توضیحات کامل شروع به کار کرده که امیدواریم دوستان عزیز با ارائه نظرات و پیشنهادات خود ما را در این راه یاری نمایند تا بتوانیم قدم کوچکی در توسعه این زبان برنامه نویسی قدرتمند اما راحت داشته باشیم.

با تشکر: ابراهیم خدائی

پیوند های روزانه

آرشیو

پیوند های وبلاگ

دانشگاه نبی اکرم (ص)
سايت اختصاصي كامپيوتر ورودی 85
سازمان فناوری اطلاعات و ارتباطات
وزارت علوم و تحقیقات و فناوری
سازمان سنجش آموزش کشور
سایت دکتر مهدوی
قالب وبلاگ
جستجوگر قالب وبلاگ

آخرین پست ها

سری جدید کامپوننت برای دلفی 7
کدها ومثالها و ترفندهای دلفی
دانلود کامپوننت
5 کامپوننت برای دانلود
آموزش نصب انواع کامپوننتها در دلفی
کار با تلفن و مودم با استفاده از کامپوننت KDTele
راهنما
الگوريتم تبديل تاريخ ميلادي به تاريخ شمسي همراه با کد کامل آن به زبان دلفی
بخشی از ويژگيهای جديد Borland Developer Studio 2006
Graphics Device Interface
Borland Developer Studio 2006 (دلفی 2006)
بورلند استودیو در یک نگاه
فایل های INI در دلفی
ساختار رکوردها در دلفی
آرایه ها در دلفی
استفاده از DLL در دلفی
انواع متغیر ها در دلفی
مدیریت حافظه در دلفی
گزارش از دلفي 9- Delphi 2005
حركت از دلفي به دلفي NET.
تكنولوژي NET.
تاریخچه دلفی
نكات مفيد براي كار در محيط دلفي
سال خوک

RSS

POWERED BY
BLOGFA.COM

کلیه ی حقوق مادی و معنوی وبلاگ ebrahimkhodaei محفوظ می باشد.
طراحی شده توسط یاس تم