عبود عبود
30-01-2015, 10: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
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