المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : سلسلة شروحات الأكشن سكريبت رقم 6 أكواد التعامل مع المصفوفات Table


عبود عبود
30-01-2015, 09:04 PM
http://i.imgur.com/57UrtCm.gif

http://i.imgur.com/emf2NIh.gif



سلسلة شروحات الأكشن سكريبت رقم 6 أكواد التعامل مع المصفوفات Table


http://www.abc4web.net/vb/images/icons/icon_z.gif ينصح بمراجعة الموضوعين التاليين نظرا لإرتباطهما إرتباطا وثيقا بهذا الشرح المقدم فى هذا الموضوع :

سلسلة شروحات الأكشن سكريبت رقم 2 المصفوفات جزء أول (http://www.abc4web.net/vb/showthread.php?t=27618)

سلسلة شروحات الأكشن سكريبت رقم 3 المصفوفات جزء ثانى (http://www.abc4web.net/vb/showthread.php?t=27640)


http://i.imgur.com/g4KNTGz.gif

جدول محتويات أكواد التعامل مع المصفوفات او الجداول كما بالصورة التالية :

http://i.imgur.com/uvORq3D.png


http://i.imgur.com/g4KNTGz.gif

Table.Concat


يستخدم هذا الكود فى الفصل بين محتويات أى جدول بأى علامة تحددها أنت أو تختارها أنت فيكون الناتج لهذا الكود هو كل قيمة مخزنة فى هذا الجدول مفصولة عن القيمة الأخرى بأى علامة تحددها أنت وطبعا يمكن إختيار نقطة البدأ فى إستعمال هذه العلامة الفاصلة هل ستكون من الإندكس الأول أو الثانى أو ....... وهكذا .

أى أننا يمكننا أن نقول أن هذا الكود يعمل أو يقوم بإرجاع نصى لأى جدول أو للقيم المخزنة فى جدول ويتم الفصل بين القيم بأى محدد من إختيارك ومن أى مكان تحددة أى يمكنك إختيار إندكس البداية و النهاية المطلوب عرضهم و فصلهم بعلامة من إختيارك .



http://i.imgur.com/uvORq3D.png


1- "SourceTable" هو إسم المصفوفة أو الجدول المراد عرض محتوياته نصيا تسلسليا .

2- "Separator" هو العلامة الفاصلة المراد وضعها بين كل قيمة من قيم الجدول والأخرى التى تليها .

3- "Start" هو رقم الإندكس من الجدول المراد البدأ منه .

4- "End" هو رقم الإندكس من الجدول المراد الإنتهاء عنده أو الوقوف عنده أو التوقف عنده ويمكن التعبير عن آخر إندكس بالرقم 1- أو بــ TABLE_ALL .

5- " ResultVariable " هو المتغير المراد حفظ النتيجة والتى ستكون نصية فية
هذه النتيجة عبارة عن كل قيمة متبوعة بالفاصلة التى إخترناها .

http://www.abc4web.net/vb/images/icons/icon12.png مثال على الصورة السابقة كان لدينا كود لقراءة محتويات ملف نصى إسمة Scintilla.lua هذه القراءة كانت قراءة جدولية بإستخدام الكود TextFile.ReadToTable وتم تخزين الناتج فى متغير إسمه result

فكان الكود كالتالى :

--
result = TextFile.ReadToTable("AutoPlay\\Scripts\\Scintilla.lua");
result2 = Table.Concat(result, ";", 5, 10);
Input.SetText("Input1", result2);




فى الكود السابق تم قراءة محتويات ملف نصى قراءة جدولية وتخزينها فى متغير ومن ثم تم سلسلة محتويات الجدول إبتداءا من الإندكس رقم 5 وإنتهاءا عند الإندكس رقم 10 ووضع فاصلة منقوطة بين كل إندكس وآخر مما تم تحديدة ليظهر على شكل نصى فى المحتوى الأخير فى وسيلة العرض الإينبوت على سبيل المثال .


http://i.imgur.com/g4KNTGz.gif


Table.Count


يستخدم هذا الكود لإعطاء إجمالى أعداد العناصر الموجودة فى المصفوفات أو الجداول .


http://i.imgur.com/uvORq3D.png


1- " SourceTable" هو إسم المصفوفة أو الجدول المراد معرفة عدد عناصرة الداخلية .

2- "ResultVariable" هو إسم المتغير المراد حفظ نتيجة الكود فية حيث فى حالة وجود خطأ يكون الريتيرن المخزن فية هو 0 وفى حالة عدم وجود خطأ يكون إجمالى أعداد العناصر الموجودة فى المصفوفة المحددة هو الريتيرن .

http://www.abc4web.net/vb/images/icons/icon_z.gif يمكن الإستعانة بدلا من هذا الكود بوضع العلامة المحجوزة فى البرنامج والتى تؤدى نفس وظيفة هذا الكود وهى علامة الشباك # .

http://www.abc4web.net/vb/images/icons/icon12.png فإذا كان لدينا على سبيل المثال المصفوفة التالية :

; {"t={"abood","abohmam","azizsoft

نريد معرفة عدد العناصر الموجود فى هذة المصفوفة يمكننا إستخدام الكود فيكون :

; (result = Table.Count(t

ثم نستخدم أى وسيلة عرض لعرض النتيجة المخزنة فى المتغير result

أو يمكننا الإستغناء عن إستخدام الكود بالكامل بإستخدام الكلمة أو العلامة المحجوزة " الشباك # " كالتالى :

; result = #t

نعود ونذكر مصفوفة = جدول أى أى كود سيكون الريتيرن له جدول يمكننا معرفة عدد عناصرة أيضا بما سبق .


http://i.imgur.com/g4KNTGz.gif

Table.Insert

يستخدم هذا الكود لإدخال عناصر أو إدراج عناصر إلى مصفوفة أو جدول فى أى ترتيب تريدة .


http://i.imgur.com/uvORq3D.png


1- "SourceTable" هو إسم المصفوفة المراد إدراج عناصر فيها .

2- ""Position هو رقم الإندكس المراد الإدخال أو الإدراج فية .

3- "Value" هو القيمة المراد إدخالها .


كمثال على مصفوفة فارغة :

--
T={};
Table.Insert(T, 1, "abood");



http://www.abc4web.net/vb/images/icons/abc4web_ico_07.gif فى هذا المثال السابق تم بإستخدام الكود إدخال العنصر أو القيمة abood فى الإندكس الأول وهو رقم 1 داخل المصفوفة السابقة T .

http://www.abc4web.net/vb/images/icons/icon_z.gifأيضا كان من الممكن الإدخال المباشر بالإستغناء عن الكود كالتالى :

--
T={};
T[1] = "abood" ;


http://www.abc4web.net/vb/images/icons/abc4web_ico_07.gif نلاحظ أننا بالعملية السابقة لم نستخدم الكود Table.Insert وقمنا بالإدخال المباشر للعنصر أو القيمة abood فى الإندكس الأول رقم 1 داخل المصفوفة T .


http://i.imgur.com/g4KNTGz.gif

Table.Remove


يستخدم هذا الكود لحذف عنصر من عناصر المصفوفة أو الجدول بواسطة معرفة رقم الإندكس الذى يحتوية .


http://i.imgur.com/uvORq3D.png


1- "SourceTable" هو إسم المصفوفة المراد حذف عناصر منها .

2- ""Position هو رقم الإندكس للعنصر المراد حذفه من المصفوفة .

3- "ResultVariable" هو إسم المتغير المراد حفظ نتيجة الكود فية ويكون نتيجة الريتيرن التى تخزن فى هذا المتغير هو القيمة أو العنصر أو النص الذى تم حذفة من عناصر المصفوفة .


http://i.imgur.com/g4KNTGz.gif


Table.Sort




يستخدم هذا الكود لترتيب أو فرز عناصر المصفوفة أو الجدول .



http://i.imgur.com/uvORq3D.png


1- "SourceTable" هو إسم المصفوفة المراد فرز أو ترتيب عناصرها .

2- "Compare" هى إسم الوظيفة المراد تنفيذها أثناء عملية الترتيب أو الفرز
وينبغى أن تحتوى هذه الوظيفة على عنصرين للمقارنة بينهما وترجع إحدى القيمتين البولينيتين إما true فى حالة فرز أو ترتيب القيمتين أو false فى حالة أن العناصر أو العنصرين فى حاجة إلى تبديل وكمثال على الوظيفة :



--
function sorter(v1,v2)
if (v1 > v2)then
return true;
else
return false;
end
end



http://www.abc4web.net/vb/images/icons/icon_z.gif فى الوظيفة السابقة يتم المقارنة بين العنصرين وفى حالة أن كان العنصر الأول أكبر من العنصر الثانى يكون الريتيرن للوظيفة هو القيمة البولينية true
أما إذا كان غير ذلك "العنصر الأول أصغر من العنصر الثانى" يكون الريتيرن للوظيفة هو القيمة البولينية false .

http://www.abc4web.net/vb/images/icons/icon_z.gif*** فى حالة عدم وضع إسم وظيفة وتركنا كلمة nil سوف يكون ترتيب عناصر المصفوفة هو ترتيب تصاعديا .


مثال رقم 1 للترتيب تصاعديا :

--
Debug.ShowWindow(true);
MyTable = {46,102,12,85};
Table.Sort(MyTable, nil)
for x,y in pairs(MyTable) do
Debug.Print(y.."\r\n");
end




فى هذا المثال نريد ترتيب عناصر المصفوفة MyTable ترتيبا تصاعديا أى من الرقم الأصغر إلى الرقم الأكبر لذلك لم نضع إسم للوظيفة المراد تنفيذها أثناء الترتيب وتركناها كما هى كلمة nil فتكون النتيجة للترتيب هى كالتالى :


12
46
85
102


http://www.abc4web.net/vb/images/icons/icon_z.gif أما فى حالة نريد ترتيب مثلا مصفوفة ترتيبا تنازليا فعلينا صنع وظيفة كالتالى :



--
function sorter(v1,v2)
if (v1 > v2)then
return true;
else
return false;
end
end




http://www.abc4web.net/vb/images/icons/icon_z.gif بعد صنع هذه الوظيفة نأخذ إسمها ونضعه بدلا من كلمة nil :



--
Debug.ShowWindow(true);
MyTable = {46,102,12,85};
Table.Sort(MyTable, nil)
for x,y in pairs(MyTable) do
Debug.Print(y.."\r\n");
end



http://www.abc4web.net/vb/images/icons/icon_z.gif فيكون نتيجة ترتيب هذه المصفوفة هو ترتيبا تنازليا أى من الرقم الأكبر إلى الرقم الأصغر :



102
85
46
12



http://www.abc4web.net/vb/images/icons/abc00.gif*** ينطبق ما سبق أيضا على الحروف أو الكلمات .



http://i.imgur.com/g4KNTGz.gif



http://i.imgur.com/Nz3B0Vj.gif

فرح صالحي
30-01-2015, 09:27 PM
السلام عليكم ورحمة الله وبركاته
زادك الله علما وزادنا فهما
بارك الله في جهودك المثمرة
موفق بإذن الله .:abc_152:.. لك مني أجمل تحية .

azizsoft
30-01-2015, 11:06 PM
بسم الله الرحمن الرحيم

بارك الله فيكم استاذ عبود
شروحات قيمة ونافعة
ان شاء الله تكون المحصلة كتاب الكتروني رائع :abc_022:

أبو يوسف
31-01-2015, 06:54 PM
جزاك الله خيرا اخانا عبود على هذا المجهود الطيب

:abc_152:

abohmam
31-01-2015, 07:06 PM
جزاك الله خيرا أخى عبود

ماشاء الله دروس مفيدة والشرح رائع

بارك الله فيك وفى جهودك النافعة

ياسرهتهت
01-02-2015, 02:29 AM
بسم الله الرحمن الرحيم
بارك الله فيك استاذ عبود
علي هذا المجهود الرائع والكبير
في توصيل المعلومة بهذا الشكل المسلسل البسيط
لك كل الشكر والتقدير في انتظار درسك القادم
:abc_152::abc_152::abc_152:

عبود عبود
01-02-2015, 04:54 AM
تحياتى لكم جميعا :abc_022:

الحارث بن فيصل
02-02-2015, 06:43 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

عبود عبود
16-02-2016, 11:19 PM
تمت مراجعة التحقق من ظهور صور الشرح بالشكل المناسب ونقل الصور على سيرفر آخر حفاظا على ظهورها بالشكل المناسب


17 \ 2 \ 2016

تحياتى :abc_152: