![]() |
|
إستفسار حول Generic TList؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : إستفسار حول Generic TList؟ (/showthread.php?tid=10983) |
إستفسار حول Generic TList؟ - MasteranyOne - 27-07-2020 السلام عليكم ورحمة الله تعالى وبركاته لقد قمت بإنشاء سجل على النحو التالي : كود : type
TPersonne = record
ID : word;
Nom : String[30];
Age : byte;
end;وقمت بتعريف Generic TList : كود : PersonneList : TList<TPersonne>;عند حذف عنصر منها وضعت : كود : PersonneList.Delete(iIndex);السؤال : هل عند حذف العنصر يتم تحرير مساحته من الذاكرة اتوماتيكيا , ام يجب عليا تحريره يدويا؟ السؤال بطريقة اخرى : ماذا نعني بحذف عنصر من Generic TList ؟ بارك الله فيك وحفظكم من كل سوء سؤال رقم 2 : كيف يتم المقارنة عن طريق حقل معين مثلا ID, فعندما يجد ID متساويان لا يهتم ببقية الحقول؟ وجدت هذه العبارة تتكلم عن الموضوع لكن لم اعرف كيف يتم ذلك : AComparer est une fonction de comparaison. Si elle n'est pas fournie, le comparateur par défaut du type est utilisé. RE: إستفسار حول Generic TList؟ - Delphi4Us - 27-07-2020 وعليكم السلام ورحمة الله عند الحذف لا يتم تحرير العنصر من الذاكرة ، على العموم دائما عندما تحتاج الى معرفة هذا يمكنك حذفه من Tlist وبعدها جرب حذفه من الذاكرة اذا كان غير موجود سوف تتحصل على رسالة خطاء . هذه طريقة استخدمها دائما للتأكد من العناصر والكائنات . RE: إستفسار حول Generic TList؟ - sofiane201 - 27-07-2020 استخدم TObjectList فهي تقوم بتحرير أي اوبجكت يتم حذفه منها. RE: إستفسار حول Generic TList؟ - MasteranyOne - 27-07-2020 بارك الله فيكم إخوتي Delphi4Us وsofiane201 على المساعدة والشرح. بالنسبة للأخ سفيان : TObjectList تصلح مع الكائينات object وليس record ؟ بالنسبة للإجابة عن السؤال التاني فقد وجدتها والحمدلله : 1- يجب تعريف الوحدة : Generics.Defaults في قسم uses 2- إستعمال هذا الكود عندا إنشاء القائمة العامة Generic TList : كود : procedure TForm1.FormCreate(Sender: TObject);
var
AComparer : IComparer<TPersonne>;
begin
AComparer := TDelegatedComparer<TPersonne>.Create(
function(const Left, Right: TPersonne): integer
begin
Result := Left.ID - Right.ID;
end);
PersonneList := TList<TPersonne>.Create(AComparer);
end;في هذه الحالة تصبح ايي عملية بحث, ترتيب تتم على القائمة فسوف يتم على حسب ماهو وجود في AComparer RE: إستفسار حول Generic TList؟ - sofiane201 - 27-07-2020 الآن رأيت انك استخدمت record, في هذه الحال لا يهم تحريره من الذاكرة. RE: إستفسار حول Generic TList؟ - MasteranyOne - 27-07-2020 هذا ما وجدته حول هل يتم تحرير record عند حذفها او لا : Remarque: Clear ne libère pas les éléments au fur et à mesure qu'ils sont retirés. Si vous avez besoin de les libérer, utilisez l'événement OnNotify, qui survient pour chaque élément retiré et fournit l'élément retiré. في المرفق تجدون كتاب يتكلم عن Generics Collections ومن بينها TList |