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

مشاهدة النسخة كاملة : ايجاد الاسماء المشتركة في قائمتين ( ListBox ) ؟


ياسرهتهت
04-02-2017, 09:44 PM
بسم الله الرحمن الرحيم
بهذا الكود المميز للاستاذ الفاضل / ابوبلقيس
نستطبع ايجاد الارقام المشتركة في القائمتان
http://c.top4top.net/p_4001ombf1.png
-----------
con1 = ListBox.GetCount("ListBox1");
con2 = ListBox.GetCount("ListBox2");
a=0;
if con1==con2 then
for i=1, con1 do
txt1 = tonumber(ListBox.GetItemText("ListBox1", i));
for i=1,con1 do
txt2 = tonumber(ListBox.GetItemText("ListBox2", i));
if i<con1 and txt1==txt2 then
a=txt1;
elseif i>=con1 and txt1==txt2 then
b=txt1;
if b>a then
a=b;
end
end
end
end
end
if a>0 then
Input.SetText("Input1", a);
else
Input.SetText("Input1", "áÇ íæÌÏ ÃÚÏÇÏ ãÔÊÑßÉ");
end
-----------
http://www.abc4web.net/vb/images/icons/abc4web_ico_02.gif ما هو الكود لتحديد الاسماء المشتركة في قائمتين ؟؟
------------


موفقين بإذن الله ... لكم مني أجمل تحية .

المـهاجر
05-02-2017, 12:29 AM
السلام عليكم ورحمة الله وبركاته
تفضل
هذا الكود الجامع و الذى يمكنك استخدامه مع أى نوع من البيانات أيا كانت
نصوص .... ارقام .... مزيج منهما ... لا يهم
دون الحاجة لأى تعديلات
الكود يستخدم حلقة واحدة لضمان سرعة التنفيذ تحسبا لضخامة عدد العناصر فى القائمتين

lc1 = ListBox.GetCount("ListBox1");
matches = {}
for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if( ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)) ~= -1 then
Table.Insert(matches, 1, text1);
end
end

Dialog.Message("Notice", Table.Concat(matches, " - ", 1, TABLE_ALL));

يمكنك معاينة الملف المفتوح المرفق
خالص تحياتى
:abc_152:

عبد الهادي بهاب
05-02-2017, 12:57 AM
السلام عليكم ورحمة الله وبركاته

ننضم للموضوع لنستفيد
شكرا للاساتذة على العلم النافع

عبد الهادي بهاب
05-02-2017, 01:14 AM
السلام عليكم ورحمة الله وبركاته
تفضل
هذا الكود الجامع و الذى يمكنك استخدامه مع أى نوع من البيانات أيا كانت
نصوص .... ارقام .... مزيج منهما ... لا يهم
دون الحاجة لأى تعديلات
الكود يستخدم حلقة واحدة لضمان سرعة التنفيذ تحسبا لضخامة عدد العناصر فى القائمتين

lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
matches = {}
for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if( ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)) ~= -1 then
Table.Insert(matches, 1, text1);
end
end

Dialog.Message("Notice", Table.Concat(matches, " - ", 1, TABLE_ALL));

يمكنك معاينة الملف المفتوح المرفق
خالص تحياتى
:abc_152:

السلام عليكم ورحمة الله وبركاته
كود محتصر وواضح جدا
تحياتي لك استاذنا

بعد اذن حضرتك تعديل على الكود من اجل استخراج العناصر الغير مشتركة


lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
matches = {}

for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(matches, 1, text1);
end
end

e= #matches+1
for i = 1,lc2 do
t =ListBox.GetItemText("ListBox2", i)
if ListBox.FindItem("ListBox1", 1, LB_BYTEXT, t)==-1 then
Table.Insert(matches, e , t); e=e+1;
end
end


Dialog.Message("Notice", Table.Concat(matches, " - ", 1, TABLE_ALL));


لم اجد اختصارا لهذا التعديل

المـهاجر
05-02-2017, 02:00 AM
السلام عليكم ورحمة الله وبركاته
كود محتصر وواضح جدا
تحياتي لك استاذنا

بعد اذن حضرتك تعديل على الكود من اجل استخراج العناصر الغير مشتركة


lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
matches = {}

for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(matches, 1, text1);
end
end

e= #matches+1
for i = 1,lc2 do
t =ListBox.GetItemText("ListBox2", i)
if ListBox.FindItem("ListBox1", 1, LB_BYTEXT, t)==-1 then
Table.Insert(matches, e , t); e=e+1;
end
end


Dialog.Message("Notice", Table.Concat(matches, " - ", 1, TABLE_ALL));


لم اجد اختصارا لهذا التعديل

لا يمكنك اختصار كود مختصر سلفا
لكن اسمح لى ان اصحح لك مفهوم خاطئ و قاتل عندك
Table.Insert(matches, e , t); e=e+1;
لماذا المتغير e ؟؟ ماذا يشغلك فى متغير الاندكس الخاص بالإدراج فى الحلقة ؟؟
هل استخدمت انا متغير مشابه ؟؟
هل شغلت بالى أو أضعت طاقتى البرمجية فى تجهيز ترقيم لهذا المتغير ؟؟؟

هذه فكرة خاطئة متوارثة فى كافة المنتديات بما فيها منتدانا للأسف
و للأسف يقع فيها العديد من الأساتذة
آن الأوان لأقتلاع هذه الفكرة الخاطئة نهائيا
أدرس الكود التالى بعناية فائقة و تركيز شديد
lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
NonMatches = {}

for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(NonMatches, 1, text1);
end
end

for i = 1,lc2 do
text1 =ListBox.GetItemText("ListBox2", i)
if ListBox.FindItem("ListBox1", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(NonMatches, 1, text1);
end
end

Dialog.Message("Notice", Table.Concat(NonMatches, " - ", 1, TABLE_ALL));

هل استخدمت انا الآن اى متغيرات لترقيم الادراج فى الحلقة ؟؟
هل شغلت بالى بالاندكس ؟؟؟
Table.Insert(NonMatches, 1, text1);
لا ؟؟
لماذا أنا دائما أدرج العنصر فى الاندكس رقم 1 ؟؟
و لماذا لا تطمس المتغيرات بعضها بل و يعمل الكود بشكل صحيح ؟؟

عندما تضع قطعة من النقود فوق قطعة أخرى من النقود
هل تستقر فوقها أم تحتل مكانها ؟؟؟؟
هل تعترض قطعة النقود السفلى على احتلال ترقيمها ؟؟؟

الآن حرر عقلك من كافة المفاهيم العتيقة و دع الكود يجيب لك عن كافة الأسئلة :abc_088:

أعتقد الرسالة تكون وصلت :abc_088:
خالص تحياتى
:abc_152:

ياسرهتهت
05-02-2017, 03:44 AM
السلام عليكم ورحمة الله وبركاته
تفضل
هذا الكود الجامع و الذى يمكنك استخدامه مع أى نوع من البيانات أيا كانت
نصوص .... ارقام .... مزيج منهما ... لا يهم
دون الحاجة لأى تعديلات
الكود يستخدم حلقة واحدة لضمان سرعة التنفيذ تحسبا لضخامة عدد العناصر فى القائمتين

lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
matches = {}
for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if( ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)) ~= -1 then
Table.Insert(matches, 1, text1);
end
end

Dialog.Message("Notice", Table.Concat(matches, " - ", 1, TABLE_ALL));

يمكنك معاينة الملف المفتوح المرفق
خالص تحياتى
:abc_152:
=====================
بسم الله الرحمن الرحيم
شكرا لك استاذ / المهاجر
على هذه الاجابة الاحترافية الممتازه
وهذا الكود الذي يحتوي على الكثير من الدروس

http://e.top4top.net/p_4010gwt41.gif
موفق بإذن الله ... لك مني أجمل تحية .
:abc_152::abc_152:

ياسرهتهت
05-02-2017, 03:49 AM
السلام عليكم ورحمة الله وبركاته
كود محتصر وواضح جدا
تحياتي لك استاذنا

بعد اذن حضرتك تعديل على الكود من اجل استخراج العناصر الغير مشتركة


lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
matches = {}

for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(matches, 1, text1);
end
end

e= #matches+1
for i = 1,lc2 do
t =ListBox.GetItemText("ListBox2", i)
if ListBox.FindItem("ListBox1", 1, LB_BYTEXT, t)==-1 then
Table.Insert(matches, e , t); e=e+1;
end
end


Dialog.Message("Notice", Table.Concat(matches, " - ", 1, TABLE_ALL));


لم اجد اختصارا لهذا التعديل

-----------------------------
بسم الله الرحمن الرحيم

شكرا لك استاذ عبد الهادي
علي المشاركات الرائعة التي تثري الموضوع والمعلومات
بارك الله فيك
موفق بإذن الله ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152:

المـهاجر
05-02-2017, 04:01 AM
=====================
بسم الله الرحمن الرحيم
شكرا لك استاذ / المهاجر
على هذه الاجابة الاحترافية الممتازه
وهذا الكود الذي يحتوي على الكثير من الدروس

http://e.top4top.net/p_4010gwt41.gif
موفق بإذن الله ... لك مني أجمل تحية .
:abc_152::abc_152:




شكرا على التقدير أخى الكريم
:abc_152::abc_152::abc_152:
:abc_152::abc_139::abc_152:
:abc_152::abc_152::abc_152:

فقط و نتيجة السرعة كان هناك سطر زائد فى الكود و هو السطر الثانى
حيث لا فائدة من احصاء عدد عناصر الليتبوكس2
سأعدل مشاركاتى السابقة
الكود بدون زيادات = 9 أسطر فقط
lc1 = ListBox.GetCount("ListBox1");
matches = {}
for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if( ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)) ~= -1 then
Table.Insert(matches, 1, text1);
end
end

Dialog.Message("Notice", Table.Concat(matches, " - ", 1, TABLE_ALL));
:abc_152:

فرح صالحي
05-02-2017, 04:55 PM
لا يمكنك اختصار كود مختصر سلفا
لكن اسمح لى ان اصحح لك مفهوم خاطئ و قاتل عندك
Table.Insert(matches, e , t); e=e+1;
لماذا المتغير e ؟؟ ماذا يشغلك فى متغير الاندكس الخاص بالإدراج فى الحلقة ؟؟
هل استخدمت انا متغير مشابه ؟؟
هل شغلت بالى أو أضعت طاقتى البرمجية فى تجهيز ترقيم لهذا المتغير ؟؟؟

هذه فكرة خاطئة متوارثة فى كافة المنتديات بما فيها منتدانا للأسف
و للأسف يقع فيها العديد من الأساتذة
آن الأوان لأقتلاع هذه الفكرة الخاطئة نهائيا
أدرس الكود التالى بعناية فائقة و تركيز شديد
lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
NonMatches = {}

for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(NonMatches, 1, text1);
end
end

for i = 1,lc2 do
text1 =ListBox.GetItemText("ListBox2", i)
if ListBox.FindItem("ListBox1", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(NonMatches, 1, text1);
end
end

Dialog.Message("Notice", Table.Concat(NonMatches, " - ", 1, TABLE_ALL));

هل استخدمت انا الآن اى متغيرات لترقيم الادراج فى الحلقة ؟؟
هل شغلت بالى بالاندكس ؟؟؟
Table.Insert(NonMatches, 1, text1);
لا ؟؟
لماذا أنا دائما أدرج العنصر فى الاندكس رقم 1 ؟؟
و لماذا لا تطمس المتغيرات بعضها بل و يعمل الكود بشكل صحيح ؟؟

عندما تضع قطعة من النقود فوق قطعة أخرى من النقود
هل تستقر فوقها أم تحتل مكانها ؟؟؟؟
هل تعترض قطعة النقود السفلى على احتلال ترقيمها ؟؟؟

الآن حرر عقلك من كافة المفاهيم العتيقة و دع الكود يجيب لك عن كافة الأسئلة :abc_088:

أعتقد الرسالة تكون وصلت :abc_088:
خالص تحياتى
:abc_152:

البرمجة على اسس صحيحية
زادك الله من علمه ونفع بك
هذه باقات ورود لك
:abc_152::abc_152::abc_152:

عبد الهادي بهاب
05-02-2017, 08:20 PM
لا يمكنك اختصار كود مختصر سلفا
لكن اسمح لى ان اصحح لك مفهوم خاطئ و قاتل عندك
Table.Insert(matches, e , t); e=e+1;
لماذا المتغير e ؟؟ ماذا يشغلك فى متغير الاندكس الخاص بالإدراج فى الحلقة ؟؟
هل استخدمت انا متغير مشابه ؟؟
هل شغلت بالى أو أضعت طاقتى البرمجية فى تجهيز ترقيم لهذا المتغير ؟؟؟

هذه فكرة خاطئة متوارثة فى كافة المنتديات بما فيها منتدانا للأسف
و للأسف يقع فيها العديد من الأساتذة
آن الأوان لأقتلاع هذه الفكرة الخاطئة نهائيا
أدرس الكود التالى بعناية فائقة و تركيز شديد
lc1 = ListBox.GetCount("ListBox1");
lc2 = ListBox.GetCount("ListBox2");
NonMatches = {}

for i = 1,lc1 do
text1 =ListBox.GetItemText("ListBox1", i)
if ListBox.FindItem("ListBox2", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(NonMatches, 1, text1);
end
end

for i = 1,lc2 do
text1 =ListBox.GetItemText("ListBox2", i)
if ListBox.FindItem("ListBox1", 1, LB_BYTEXT, text1)==-1 then
Table.Insert(NonMatches, 1, text1);
end
end

Dialog.Message("Notice", Table.Concat(NonMatches, " - ", 1, TABLE_ALL));

هل استخدمت انا الآن اى متغيرات لترقيم الادراج فى الحلقة ؟؟
هل شغلت بالى بالاندكس ؟؟؟
Table.Insert(NonMatches, 1, text1);
لا ؟؟
لماذا أنا دائما أدرج العنصر فى الاندكس رقم 1 ؟؟
و لماذا لا تطمس المتغيرات بعضها بل و يعمل الكود بشكل صحيح ؟؟

عندما تضع قطعة من النقود فوق قطعة أخرى من النقود
هل تستقر فوقها أم تحتل مكانها ؟؟؟؟
هل تعترض قطعة النقود السفلى على احتلال ترقيمها ؟؟؟

الآن حرر عقلك من كافة المفاهيم العتيقة و دع الكود يجيب لك عن كافة الأسئلة :abc_088:

أعتقد الرسالة تكون وصلت :abc_088:
خالص تحياتى
:abc_152:

:abc_050::abc_050::abc_050::abc_050:
اغبط نفسي عن انني اجد من يعلمني بطريقة ميسرة واضحة رائعة
بارك الله فيكم و زادكم من علمه الوفير
كنت اعتقد انه لارداج عنصر جديد في مصفوفة ان لم نحدد مكانه في المصفوفة سيقوم اليا باستبدال العنصر الاول
شكرا جزيلا جدا و اختصرنا الكثير من الدوران في الكوادت
جزاك الله خير الدراين

ثامر أبو بلقيس
06-02-2017, 08:39 AM
http://www.abc4web.net/vb/showthread.php?t=33627

ياسرهتهت
06-02-2017, 12:20 PM
http://www.abc4web.net/vb/showthread.php?t=33627


------------------------
بسم الله الرحمن الرحيم

شكرا لك استاذنا الفاضل
:abc_138::abc_138:

محمد رمضان أبو يوسف
12-02-2017, 12:52 AM
بارك الله فيكم

محمد بن أحمد أبو حذيفة
04-03-2017, 10:33 AM
بسم الله الرحمن الرحيم
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

أبو قصي
04-03-2017, 05:18 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .