Mahmood_M
یک شنبه 25 شهریور 1386, 04:13 صبح
به نام خدا ...
در این مقاله قصد داریم درباره کلاس TStrings بحث کنیم ...
مواردی که در این مثاله بررسی می شوند عبارتند از متدها و خصوصیات این کلاس ...
البته به علت زیادی متدها و خصوصیات ، به صورت موردی و کاربردی آنها را بررسی میکنیم ...
TStrings چیست ؟
TStrings کلاسی است برای نگهداری مجموعه ای از رشته ها همراه با Index و شماره مخصوص هر رشته که امکان ویرایش و دسترسی آسان آنها را فراهم میکند ، علاوه بر این میتوان در یک TStrings ، یک Object وابسته به یک رشته را نیز ثبت کرد و از آن استفاده نمود ...
ثبت اطلاعات در یک TStrings :
برای ثبت اطلاعات در یک کلاس TStrings ابتدا باید آن را Create کرده و سپس از متدهایی مثل Add ، AddObject و ... استفاده نماییم ...
Create کردن یک TStrings :
با استفاده از متد Create میتوانیم یک TStrings ایجاد نماییم :
var
Strings : TStrings;
begin
Strings := TStrings.Create;
end;
اگر نیاز داریم که تنها یک رشته را در یک TStrings ثبت نماییم ، میتوانیم از دستور Add استفاده نماییم :
var
Strings : TStrings;
S : String;
begin
S := 'String';
Strings := TStrings.Create;
Strings.Add(S);
end;
دستور Add در کد بالا مقدار متغیر S را در Strings که یک مقدار TStrings است ثبت می نماید ...
گاهی اوقات نیاز داریم که تعدادی Object ( مثل TabSheet های یک PageControl ) را در یک TStrings ثبت نماییم ، بدین منظور باید از دستور AddObject استفاده نماییم :
البته توجه کنید که یک متغیر از نوع TStrings نمی تواند یک Object را در خود نگاه دارد ( در زمان اجرا خطای AbStract نمایش داده خواهد شد )
باید Object در آیتمهای یک شی دیگر که از نوع TStrings است قرار گیرد ، برای مثال می توانید در آیتم های یک ListBox و یا یک ComboBox آبجکت مورد نظر را Add کنید ...
برای مثال :
ListBox1.Items.AddObject('MyTabSheet', PageControl1.Pages[0]);
پس از ثبت این Object میتوانید برای مثال به صورت زیر از آن استفاده نمایید :
PageControl1.ActivePage := TTabSheet(ListBox1.Items.Objects[1]);
کد بالا صفحه فعال PageControl را برابر با TabSheet موجود در لیست ( که در کد مشخص شده ) قرار می دهد ...
دستور دیگری که برای ثبت اطلاعات در TStrings استفاده می شود ، دستور AddStrings است که یک مقدار TStrings را به لیست رشته ها اضافه خواهد کرد ...
مثال :
var
Strings : TStringList;
S : String;
begin
S := 'String';
Strings := TStringList.Create;
Strings.Add(S);
ListBox1.Items.AddStrings(Strings);
end;
کد بالا ، رشته های موجود در Strings ( که همان S است ) را در ListBox1 قرار خواهد داد ...
دستور دیگری که برای اضافه کردن اطلاعات به یک TStrings به کار میرود ، دستور Append است ، این دستور یک مقدار String را به آخر لیست رشته ها در TStrings قرار می دهد ...
مثال :
var
S : TStrings;
begin
S := TStrings.Create;
S.Append('Hello');
end;
راه دیگر برای اضافه کردن یک رشته به TStrings استفاده از متد Insert است ...
این متد 2 پارامتر دارد ، 1. Index که شماره Index رشته ای که اضافه می شود را تعیین میکند و 2. S که مقدار رشته ای که باید اضافه شود را دربر می گیرد ..
مثال :
var
S : TStrings;
begin
S := TStrings.Create;
S.Insert(0, 'Hello');
end;
کد بالا رشته Hello را به عنوان اولین مقدار در لیست قرار می دهد ( به عنوان آیتمی که Index صفر دارد )
کلاس TStrings همچنین توابع دیگری به نام های LoadFromFile و LoadFromStream دارد که امکان وارد کردن رشته ها از یک فایل متنی و از Stream را میدهد ...
این دستورات یک پارامتر دارند که نام فایل و نام Stream را دربر می گیرد ...
مثال:
var
S : TStrings;
begin
S := TStrings.Create;
S.LoadFromFile(FileName);
S.LoadFromStream(Stream);
end;
حذف اطلاعات :
برای حذف اطلاعات از یک TStrings چندین راه وجود دارد که بررسی میکنیم
استفاده از متد Delete :
این متد یک رشته ( آیتم ) را از لیست حذف می نماید ، این متد یک پامتر دارد که باید Index مربوط به آیتمی که قصد حذف کردن آن را دارید را در آن وارد نمایید :
var
S : TStrings;
begin
S := TStrings.Create;
S.Delete(0);
end;
استفاده از متد Clear :
این متد کل رشته ها ( آیتمهای ) موجود در TStrings را حذف خواهد کرد ...
var
S : TStrings;
begin
S := TStrings.Create;
S.Clear;
end;
-----------------------------------
سایر متدها و توابع پرکاربرد :
متد Exchange :
این متد مقدار ( یا جایگاه ) دو آیتم را با هم عوض میکند ، این متد 2 پارامتر دارد با نامهای Index1 و Index2 ، بعد از اجرای این متد جای Index1 با Index2 عوض خواهد شد ...
برای مثال فرض کنیم در یک TStrings، یک آیتم با Index صفر داریم و یک آیتم دیگر با Index یک که مقدار رشته اولی برای با " Hello " و دومی برابر با " Bye " است ، پس اجرای این متد با Index های صفر و یک ، مقدار Index برای رشته " Hello " برابر با 1 و مقدار Index برای رشته " Bye " صفر خواهد بود :
S.Exchange(0, 1);
تابع Equals :
این تابع مقادیر TStrings فعلی را با مقادیر یک TStrings دیگر که به عنوان پارامتر دریافت می کند مقایسه میکند و در صورت همسان بودن ، مقدار True و در غیر این صورت مقدار False را برمی گرداند :
S.Equals(Strings : TStrings);
متد Move :
این متد یک رشته را از یک Index به یک Index دیگر منتقل میکند ، به عنوان مثال فرض کنیم که یک TStrings با 4 رشته ( آیتم ) داریم ، اگر بخواهیم مثلا آیتم سوم را از جای خود به آیتم اول ببریم باید به صورت زیر از متد Move استفاده نماییم :
var
S : TStrings;
begin
S := TStrings.Create;
S.Move(2, 0);
end;
توابع IndexOf و IndexOfObject :
به وسیله این توابع می توانید Index یک رشته و یا یک Object را بدست آورید ، این توابع هر کدام یک پارامتر دارند ، تابع IndexOf پارامتری از نوع String دارد که رشته را گرفته و Index آن را به عنوان خروجی برگشت میدهد و تابع IndexOfObject هم پارامتری از نوع TObject دارد که Object مورد نظر را به عنوان ورودی دریافت کرده و شماره Index آن را به عنوان خروجی برگشت میدهد ...
S.IndexOf('Hello');
S.IndexOfObject(PageControl1.Pages[0]);
خاصیت Strings :
با استفاده از این خاصیت می توانید یک رشته از TStrings را با دادن Index آن استخراج کنید :
MyStr := S.Strings[0];
خاصیت Capacity :
این خاصیت از نوع Integer بوده و به وسیله آن میتوانید محدودیت تعداد رشته ( آیتم ) هایی که می توان در TStrings مورد نظر ثبت کرد را مشخص نمایید ...
مثلا اگر این خصوصیت بر روی 6 تنظیم شده باشد ، TStrings مورد نظر تنها 6 آیتم دریافت خواهد کرد ...
خاصیت Count :
این خاصیت از نوع Integer بوده و تعداد آیتمهای موجود در TStrings را به ما می دهد ...
------------------
این مقاله هم به پایان رسید ، این نکته رو هم ذکر کنم که این مقاله کامل کامل نبود یعنی در این مقاله کل توابع و متد ها و خصوصیتهای کلاس TStrings بررسی نشد ، کلاس TStrings چندین خاصیت و تابع داره که کاربردهای خاص دارند و به صورت معمول استفاده نمی شن ، از این جمله میشه به خصوصیت CommaText اشاره کرد ، با استفاده از این Property می توان رشته های درون TStrings را به صورت ( SDF ) یا System Data Format داشت
همچنین در این مقاله از توضیح برخی توابع مانند InsertObject که عملکردی شبیه تابع Insert دارند اجتناب شد ... ( توضیح تمام متدها و توابع و خصوصیتهای کلاس TStrings از حوصله این مقاله و کلا یک مقاله خارج است )
می توانید برای کسب اطلاعات بیشتر و کامل از Help دلفی کمک بگیرید ...
امیدوارم مفید بوده باشه ...
موفق و پیروز باشید ...
در این مقاله قصد داریم درباره کلاس TStrings بحث کنیم ...
مواردی که در این مثاله بررسی می شوند عبارتند از متدها و خصوصیات این کلاس ...
البته به علت زیادی متدها و خصوصیات ، به صورت موردی و کاربردی آنها را بررسی میکنیم ...
TStrings چیست ؟
TStrings کلاسی است برای نگهداری مجموعه ای از رشته ها همراه با Index و شماره مخصوص هر رشته که امکان ویرایش و دسترسی آسان آنها را فراهم میکند ، علاوه بر این میتوان در یک TStrings ، یک Object وابسته به یک رشته را نیز ثبت کرد و از آن استفاده نمود ...
ثبت اطلاعات در یک TStrings :
برای ثبت اطلاعات در یک کلاس TStrings ابتدا باید آن را Create کرده و سپس از متدهایی مثل Add ، AddObject و ... استفاده نماییم ...
Create کردن یک TStrings :
با استفاده از متد Create میتوانیم یک TStrings ایجاد نماییم :
var
Strings : TStrings;
begin
Strings := TStrings.Create;
end;
اگر نیاز داریم که تنها یک رشته را در یک TStrings ثبت نماییم ، میتوانیم از دستور Add استفاده نماییم :
var
Strings : TStrings;
S : String;
begin
S := 'String';
Strings := TStrings.Create;
Strings.Add(S);
end;
دستور Add در کد بالا مقدار متغیر S را در Strings که یک مقدار TStrings است ثبت می نماید ...
گاهی اوقات نیاز داریم که تعدادی Object ( مثل TabSheet های یک PageControl ) را در یک TStrings ثبت نماییم ، بدین منظور باید از دستور AddObject استفاده نماییم :
البته توجه کنید که یک متغیر از نوع TStrings نمی تواند یک Object را در خود نگاه دارد ( در زمان اجرا خطای AbStract نمایش داده خواهد شد )
باید Object در آیتمهای یک شی دیگر که از نوع TStrings است قرار گیرد ، برای مثال می توانید در آیتم های یک ListBox و یا یک ComboBox آبجکت مورد نظر را Add کنید ...
برای مثال :
ListBox1.Items.AddObject('MyTabSheet', PageControl1.Pages[0]);
پس از ثبت این Object میتوانید برای مثال به صورت زیر از آن استفاده نمایید :
PageControl1.ActivePage := TTabSheet(ListBox1.Items.Objects[1]);
کد بالا صفحه فعال PageControl را برابر با TabSheet موجود در لیست ( که در کد مشخص شده ) قرار می دهد ...
دستور دیگری که برای ثبت اطلاعات در TStrings استفاده می شود ، دستور AddStrings است که یک مقدار TStrings را به لیست رشته ها اضافه خواهد کرد ...
مثال :
var
Strings : TStringList;
S : String;
begin
S := 'String';
Strings := TStringList.Create;
Strings.Add(S);
ListBox1.Items.AddStrings(Strings);
end;
کد بالا ، رشته های موجود در Strings ( که همان S است ) را در ListBox1 قرار خواهد داد ...
دستور دیگری که برای اضافه کردن اطلاعات به یک TStrings به کار میرود ، دستور Append است ، این دستور یک مقدار String را به آخر لیست رشته ها در TStrings قرار می دهد ...
مثال :
var
S : TStrings;
begin
S := TStrings.Create;
S.Append('Hello');
end;
راه دیگر برای اضافه کردن یک رشته به TStrings استفاده از متد Insert است ...
این متد 2 پارامتر دارد ، 1. Index که شماره Index رشته ای که اضافه می شود را تعیین میکند و 2. S که مقدار رشته ای که باید اضافه شود را دربر می گیرد ..
مثال :
var
S : TStrings;
begin
S := TStrings.Create;
S.Insert(0, 'Hello');
end;
کد بالا رشته Hello را به عنوان اولین مقدار در لیست قرار می دهد ( به عنوان آیتمی که Index صفر دارد )
کلاس TStrings همچنین توابع دیگری به نام های LoadFromFile و LoadFromStream دارد که امکان وارد کردن رشته ها از یک فایل متنی و از Stream را میدهد ...
این دستورات یک پارامتر دارند که نام فایل و نام Stream را دربر می گیرد ...
مثال:
var
S : TStrings;
begin
S := TStrings.Create;
S.LoadFromFile(FileName);
S.LoadFromStream(Stream);
end;
حذف اطلاعات :
برای حذف اطلاعات از یک TStrings چندین راه وجود دارد که بررسی میکنیم
استفاده از متد Delete :
این متد یک رشته ( آیتم ) را از لیست حذف می نماید ، این متد یک پامتر دارد که باید Index مربوط به آیتمی که قصد حذف کردن آن را دارید را در آن وارد نمایید :
var
S : TStrings;
begin
S := TStrings.Create;
S.Delete(0);
end;
استفاده از متد Clear :
این متد کل رشته ها ( آیتمهای ) موجود در TStrings را حذف خواهد کرد ...
var
S : TStrings;
begin
S := TStrings.Create;
S.Clear;
end;
-----------------------------------
سایر متدها و توابع پرکاربرد :
متد Exchange :
این متد مقدار ( یا جایگاه ) دو آیتم را با هم عوض میکند ، این متد 2 پارامتر دارد با نامهای Index1 و Index2 ، بعد از اجرای این متد جای Index1 با Index2 عوض خواهد شد ...
برای مثال فرض کنیم در یک TStrings، یک آیتم با Index صفر داریم و یک آیتم دیگر با Index یک که مقدار رشته اولی برای با " Hello " و دومی برابر با " Bye " است ، پس اجرای این متد با Index های صفر و یک ، مقدار Index برای رشته " Hello " برابر با 1 و مقدار Index برای رشته " Bye " صفر خواهد بود :
S.Exchange(0, 1);
تابع Equals :
این تابع مقادیر TStrings فعلی را با مقادیر یک TStrings دیگر که به عنوان پارامتر دریافت می کند مقایسه میکند و در صورت همسان بودن ، مقدار True و در غیر این صورت مقدار False را برمی گرداند :
S.Equals(Strings : TStrings);
متد Move :
این متد یک رشته را از یک Index به یک Index دیگر منتقل میکند ، به عنوان مثال فرض کنیم که یک TStrings با 4 رشته ( آیتم ) داریم ، اگر بخواهیم مثلا آیتم سوم را از جای خود به آیتم اول ببریم باید به صورت زیر از متد Move استفاده نماییم :
var
S : TStrings;
begin
S := TStrings.Create;
S.Move(2, 0);
end;
توابع IndexOf و IndexOfObject :
به وسیله این توابع می توانید Index یک رشته و یا یک Object را بدست آورید ، این توابع هر کدام یک پارامتر دارند ، تابع IndexOf پارامتری از نوع String دارد که رشته را گرفته و Index آن را به عنوان خروجی برگشت میدهد و تابع IndexOfObject هم پارامتری از نوع TObject دارد که Object مورد نظر را به عنوان ورودی دریافت کرده و شماره Index آن را به عنوان خروجی برگشت میدهد ...
S.IndexOf('Hello');
S.IndexOfObject(PageControl1.Pages[0]);
خاصیت Strings :
با استفاده از این خاصیت می توانید یک رشته از TStrings را با دادن Index آن استخراج کنید :
MyStr := S.Strings[0];
خاصیت Capacity :
این خاصیت از نوع Integer بوده و به وسیله آن میتوانید محدودیت تعداد رشته ( آیتم ) هایی که می توان در TStrings مورد نظر ثبت کرد را مشخص نمایید ...
مثلا اگر این خصوصیت بر روی 6 تنظیم شده باشد ، TStrings مورد نظر تنها 6 آیتم دریافت خواهد کرد ...
خاصیت Count :
این خاصیت از نوع Integer بوده و تعداد آیتمهای موجود در TStrings را به ما می دهد ...
------------------
این مقاله هم به پایان رسید ، این نکته رو هم ذکر کنم که این مقاله کامل کامل نبود یعنی در این مقاله کل توابع و متد ها و خصوصیتهای کلاس TStrings بررسی نشد ، کلاس TStrings چندین خاصیت و تابع داره که کاربردهای خاص دارند و به صورت معمول استفاده نمی شن ، از این جمله میشه به خصوصیت CommaText اشاره کرد ، با استفاده از این Property می توان رشته های درون TStrings را به صورت ( SDF ) یا System Data Format داشت
همچنین در این مقاله از توضیح برخی توابع مانند InsertObject که عملکردی شبیه تابع Insert دارند اجتناب شد ... ( توضیح تمام متدها و توابع و خصوصیتهای کلاس TStrings از حوصله این مقاله و کلا یک مقاله خارج است )
می توانید برای کسب اطلاعات بیشتر و کامل از Help دلفی کمک بگیرید ...
امیدوارم مفید بوده باشه ...
موفق و پیروز باشید ...