Mahmood_M
شنبه 24 شهریور 1386, 13:32 عصر
به نام خدا ...
قصد داریم در طی یک مقاله روش استفاده از فایلهای INI را بررسی نماییم :
استفاده از فایل INI برای ذخیره و بازیابی اطلاعات برنامه
اغلب اوقات در برنامه های خود نیاز داریم تا اطلاعاتی در مورد برنامه را در جایی ذخیره و با شروع دوباره برنامه آنها را بازیابی نماییم ...
دو راه رایج در این زمینه استفاده از Registry و فایلهای INI هستند ...
ما در این مقاله به بررسی فایلهای INI و آموزش طریقه استفاده از آنها می پردازیم ...
دلفی یونیتی به نام INIFiles در اختیار دارد که امکان استفاده از فایلهای INI را فراهم میکند ، در این یونیت کلاسی به نام TINIFiles وجود دارد که به وسیله آن می توانیم یک فایل INI ایجاد کرده و آن را ویرایش نماییم .
قبل از شروع کد نویسی باید یونیت INIFiles را به قسمت Uses فرم اضافه نمایید ...
ایجاد فایل INI :
برای ایجاد یک فایل INI باید یک متغیر از این نوع ساخته و سپس با متد Create و دادن آدرس ، فایل مورد نظر را بسازیم :
var
MyIniFile : TINIFile;
begin
MyINIFile := TINIFile.Create("File Address");
end;
با اجرای کد بالا ، فایل INI مورد نظر درآدرس وارد شده در متد Create ساخته خواهد شد و میتوانیم آن را ویرایش نماییم ...
نوشتن اطلاعات :
برای نوشتن اطلاعات در فایل INI باید با توجه به نوع داده ( String ، Integer ، Boolean یا ... ) متد مربوطه را فراخوانی کنیم ...
نام متد مربوط به هر داده برابر است با واژه " Write " و نام نوع داده ...
به عنوان مثال نوشتن یک مقدار String در فایل INI باید متد WriteString را فراخوانی نماییم
این متد سه پارامتر دارد :
1. Section : این قسمت مـربوط به دسته اطلاعات مـی باشد ، میتوانید برای چند داده مختلف که در فایل INI می نویسید ، یک دسته ( Section ) یکسان وارد نمایید تا در موقع خواندن بتوانید همه آنها را ( با متدی که در ادامه توضیح خواهیم داد ) یکجا بخوانید ...
2. Ident : این پارامتر مربوط به نام مقدار داده می باشد ، هر داده باید دارای یک نام باشد تا موقع خواندن شناخته شود ...
3. Value : این قسمت مربوط به مقدار داده است ، یعنی همان چیزی که باید در فایل نوشته شود ...
هر سه پارامتر بالا از نوع String هستند ...
سایر متدهای Write ( برای انواع داده ای دیگر ) هم مانند متد بالا 3 پارامتر و به همان نامها دارند ، تنها فرقی که بین آنها نوع مقدار ورودی برای پارامتر Value است که با توجه به نوع داده ای که میخواهیم وارد نماییم ، متغیر است ، به عنوان مثال برای نوشتن یک داده از نوع Integer باید متد WriteInteger را با پارامترهای زیر وارد نماییم :
MyIniFile.WriteInteger(Section : String; Ident : String; Value : Integer);
در زیر متد Write برای سایر انواع داده ای دیگر آمده است :
WriteBoolean( Section : String; Ident : String; Value : Boolean );
WriteFloat( Section : String; Ident : String; Value : Double);
WriteDate( Section : String; Ident : String; Value : TDateTime);
WriteTime( Section : String; Ident : String; Value : TDateTime);
WriteDateTime( Section : String; Ident : String; Value : TDateTime);
WriteBinaryStream( Section : String; Ident : String; Value : TStream);
خواندن اطلاعات :
برای خواندن اطلاعات ، به جای واژه Write باید از Read استفاده نماییم ، متد ReadX ( X همان نوع داده ای است ) ساختاری مانند متد WriteX دارد ، با این تفاوت که به جای نوشتن اطلاعات ، اطلاعات را می خواند ...
در متد ReadX به جای پارامتر Value پارامتر Default قرار دارد ، شما در این پارامتر مقداری را وارد می نمایید تا اگر به هر دلیلی ، Section یا Ident ای که وارد کردید در فایل پیدا نشد و یا مقداری برای داده وجود نداشت ، مقدار برگشتی متد Read ، همان مقدار Default باشد ...
به عنوان مثال فرض کنیم میخواهیم یک مقدار Integer را از فایل INI بخوانیم ، به کد زیر دقت نمایید :
var
N : Integer;
begin
N := MyIniFile.ReadInteger("MyNum", "MyNum", 3);
end;
بعد از اجرای کد بالا اگر در فایل INI مربوطه ، Section ای با نام MyNum یا Ident ای با نام MyNum وجود نداشته باشد ، مقدار متغیر N برابر با 3 خواهد بود در غیر این صورت مقدار N برابر خواهد بود با مقدار موجود در داده ای که Section و Ident آن MyNum باشد ...
متد Read برای سایر داده ها به شرح زیر است :
ReadString( Section : String; Ident : String; Default : String);
ReadInteger( Section : String; Ident : String; Default : Integer);
ReadBool( Section : String; Ident : String; Default : Boolean);
ReadDate( Section : String; Ident : String; Default : TDateTime);
ReadTime( Section : String; Ident : String; Default : TDateTime);
ReadDateTime( Section : String; Ident : String; Default : TDateTime);
ReadBinaryStream( Section : String; Ident : String; Default : TStream);
خواندن گروهی اطلاعات :
کلاس TINIFile دو متد به نامهای ReadSection و ReadSectionValues دارد که امکان خواندن گروهی از اطلاعات را می دهد ...
منظور از گروه همان Section ای است که برای نوشتن اطلاعات وارد نموده اید ، به عنوان مثال اگر سه داده String در فایل نوشته باشید و نام Section هر سه آنها را " MySection " گذاشته باشید ، می توانید ، آن 3 مقدار را در یک TStrings ، قرار دهید ...
ساختار این متدها به شرح زیر می باشد :
ReadSection( Section : String; Strings : TStrings );
ReadSectionValues( Section : String; Strings : TStrings );
خواندن لیست گروه ها ( Sections ) :
با استفاده از متد ReadSections میتوانید ، لیست تمام گروه های موجود در فایل INI را دریافت نمایید و در یک TStrings قرار دهید :
ReadSections( Strings : TStrings );
سایر متدها و توابع :
متد EraseSection :
با استفاده از این متد میتوانید یک Section خاص را از فایل حذف نمایید ( اطلاعات آن را پاک کنید ) :
EraseSection( Section : String );
متد DeleteKey :
به وسیله این متد می توانید یک مقدار را از فایل حذف نمایید ، این متد دو پارامتر برای نام Section و نام Ident دارد :
DeleteKey( Section : String; Ident : String );
تابع SectionExists :
با استفاده از این تابع میتوانید چک کنید که آیا یک Section خاص در فایل قرار دارد یا خیر ،مقدار برگشتی این تابع از نوه Boolean می باشد :
SectionExists( Section : String ) : Boolean;
تابع ValueExists :
به وسیله این تابع میتوانید چک کنید که آیا یک مقدار در فایل وجود دارد یا خیر ، مقدار برگشتی این تابع از نوع Boolean می باشد :
ValueExists( Section : String; Ident : String );
متد UpdateFile :
این متد وظیفه بروز رسانی فایل INI و پاک کردن بافر استفاده شده فایل INI را دارد و بهتر است بعد از چندین عمل خواندن و نوشتن فراخوانی شود تا فایل INI برای کار مجدد آماده شود.
خاصیت FileName :
این خاصیت فقط خواندنی می باشد ( ReadOnly ) و به وسیله آن می توانید نام ( و آدرس ) فایل INI را نمایش دهید ...
پایان ...
امیدوارم مفید بودن باشه ...
PDF این مقاله رو می تونید از اینجا (http://nabegheh.parsaspace.com/DelphiTutrials/INI%20Files.pdf) دریافت کنید ...
موفق باشید ...
قصد داریم در طی یک مقاله روش استفاده از فایلهای INI را بررسی نماییم :
استفاده از فایل INI برای ذخیره و بازیابی اطلاعات برنامه
اغلب اوقات در برنامه های خود نیاز داریم تا اطلاعاتی در مورد برنامه را در جایی ذخیره و با شروع دوباره برنامه آنها را بازیابی نماییم ...
دو راه رایج در این زمینه استفاده از Registry و فایلهای INI هستند ...
ما در این مقاله به بررسی فایلهای INI و آموزش طریقه استفاده از آنها می پردازیم ...
دلفی یونیتی به نام INIFiles در اختیار دارد که امکان استفاده از فایلهای INI را فراهم میکند ، در این یونیت کلاسی به نام TINIFiles وجود دارد که به وسیله آن می توانیم یک فایل INI ایجاد کرده و آن را ویرایش نماییم .
قبل از شروع کد نویسی باید یونیت INIFiles را به قسمت Uses فرم اضافه نمایید ...
ایجاد فایل INI :
برای ایجاد یک فایل INI باید یک متغیر از این نوع ساخته و سپس با متد Create و دادن آدرس ، فایل مورد نظر را بسازیم :
var
MyIniFile : TINIFile;
begin
MyINIFile := TINIFile.Create("File Address");
end;
با اجرای کد بالا ، فایل INI مورد نظر درآدرس وارد شده در متد Create ساخته خواهد شد و میتوانیم آن را ویرایش نماییم ...
نوشتن اطلاعات :
برای نوشتن اطلاعات در فایل INI باید با توجه به نوع داده ( String ، Integer ، Boolean یا ... ) متد مربوطه را فراخوانی کنیم ...
نام متد مربوط به هر داده برابر است با واژه " Write " و نام نوع داده ...
به عنوان مثال نوشتن یک مقدار String در فایل INI باید متد WriteString را فراخوانی نماییم
این متد سه پارامتر دارد :
1. Section : این قسمت مـربوط به دسته اطلاعات مـی باشد ، میتوانید برای چند داده مختلف که در فایل INI می نویسید ، یک دسته ( Section ) یکسان وارد نمایید تا در موقع خواندن بتوانید همه آنها را ( با متدی که در ادامه توضیح خواهیم داد ) یکجا بخوانید ...
2. Ident : این پارامتر مربوط به نام مقدار داده می باشد ، هر داده باید دارای یک نام باشد تا موقع خواندن شناخته شود ...
3. Value : این قسمت مربوط به مقدار داده است ، یعنی همان چیزی که باید در فایل نوشته شود ...
هر سه پارامتر بالا از نوع String هستند ...
سایر متدهای Write ( برای انواع داده ای دیگر ) هم مانند متد بالا 3 پارامتر و به همان نامها دارند ، تنها فرقی که بین آنها نوع مقدار ورودی برای پارامتر Value است که با توجه به نوع داده ای که میخواهیم وارد نماییم ، متغیر است ، به عنوان مثال برای نوشتن یک داده از نوع Integer باید متد WriteInteger را با پارامترهای زیر وارد نماییم :
MyIniFile.WriteInteger(Section : String; Ident : String; Value : Integer);
در زیر متد Write برای سایر انواع داده ای دیگر آمده است :
WriteBoolean( Section : String; Ident : String; Value : Boolean );
WriteFloat( Section : String; Ident : String; Value : Double);
WriteDate( Section : String; Ident : String; Value : TDateTime);
WriteTime( Section : String; Ident : String; Value : TDateTime);
WriteDateTime( Section : String; Ident : String; Value : TDateTime);
WriteBinaryStream( Section : String; Ident : String; Value : TStream);
خواندن اطلاعات :
برای خواندن اطلاعات ، به جای واژه Write باید از Read استفاده نماییم ، متد ReadX ( X همان نوع داده ای است ) ساختاری مانند متد WriteX دارد ، با این تفاوت که به جای نوشتن اطلاعات ، اطلاعات را می خواند ...
در متد ReadX به جای پارامتر Value پارامتر Default قرار دارد ، شما در این پارامتر مقداری را وارد می نمایید تا اگر به هر دلیلی ، Section یا Ident ای که وارد کردید در فایل پیدا نشد و یا مقداری برای داده وجود نداشت ، مقدار برگشتی متد Read ، همان مقدار Default باشد ...
به عنوان مثال فرض کنیم میخواهیم یک مقدار Integer را از فایل INI بخوانیم ، به کد زیر دقت نمایید :
var
N : Integer;
begin
N := MyIniFile.ReadInteger("MyNum", "MyNum", 3);
end;
بعد از اجرای کد بالا اگر در فایل INI مربوطه ، Section ای با نام MyNum یا Ident ای با نام MyNum وجود نداشته باشد ، مقدار متغیر N برابر با 3 خواهد بود در غیر این صورت مقدار N برابر خواهد بود با مقدار موجود در داده ای که Section و Ident آن MyNum باشد ...
متد Read برای سایر داده ها به شرح زیر است :
ReadString( Section : String; Ident : String; Default : String);
ReadInteger( Section : String; Ident : String; Default : Integer);
ReadBool( Section : String; Ident : String; Default : Boolean);
ReadDate( Section : String; Ident : String; Default : TDateTime);
ReadTime( Section : String; Ident : String; Default : TDateTime);
ReadDateTime( Section : String; Ident : String; Default : TDateTime);
ReadBinaryStream( Section : String; Ident : String; Default : TStream);
خواندن گروهی اطلاعات :
کلاس TINIFile دو متد به نامهای ReadSection و ReadSectionValues دارد که امکان خواندن گروهی از اطلاعات را می دهد ...
منظور از گروه همان Section ای است که برای نوشتن اطلاعات وارد نموده اید ، به عنوان مثال اگر سه داده String در فایل نوشته باشید و نام Section هر سه آنها را " MySection " گذاشته باشید ، می توانید ، آن 3 مقدار را در یک TStrings ، قرار دهید ...
ساختار این متدها به شرح زیر می باشد :
ReadSection( Section : String; Strings : TStrings );
ReadSectionValues( Section : String; Strings : TStrings );
خواندن لیست گروه ها ( Sections ) :
با استفاده از متد ReadSections میتوانید ، لیست تمام گروه های موجود در فایل INI را دریافت نمایید و در یک TStrings قرار دهید :
ReadSections( Strings : TStrings );
سایر متدها و توابع :
متد EraseSection :
با استفاده از این متد میتوانید یک Section خاص را از فایل حذف نمایید ( اطلاعات آن را پاک کنید ) :
EraseSection( Section : String );
متد DeleteKey :
به وسیله این متد می توانید یک مقدار را از فایل حذف نمایید ، این متد دو پارامتر برای نام Section و نام Ident دارد :
DeleteKey( Section : String; Ident : String );
تابع SectionExists :
با استفاده از این تابع میتوانید چک کنید که آیا یک Section خاص در فایل قرار دارد یا خیر ،مقدار برگشتی این تابع از نوه Boolean می باشد :
SectionExists( Section : String ) : Boolean;
تابع ValueExists :
به وسیله این تابع میتوانید چک کنید که آیا یک مقدار در فایل وجود دارد یا خیر ، مقدار برگشتی این تابع از نوع Boolean می باشد :
ValueExists( Section : String; Ident : String );
متد UpdateFile :
این متد وظیفه بروز رسانی فایل INI و پاک کردن بافر استفاده شده فایل INI را دارد و بهتر است بعد از چندین عمل خواندن و نوشتن فراخوانی شود تا فایل INI برای کار مجدد آماده شود.
خاصیت FileName :
این خاصیت فقط خواندنی می باشد ( ReadOnly ) و به وسیله آن می توانید نام ( و آدرس ) فایل INI را نمایش دهید ...
پایان ...
امیدوارم مفید بودن باشه ...
PDF این مقاله رو می تونید از اینجا (http://nabegheh.parsaspace.com/DelphiTutrials/INI%20Files.pdf) دریافت کنید ...
موفق باشید ...