منتدى تعليمي متعلق بالاتوبلاي ميديا ستوديو
 
الرئيسيةالتسجيلدخول

شاطر | 
 

  مساعدة فى عمل مقارنة بين مصفوفتين

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
الامل الطائر



المساهمات : 57
تاريخ التسجيل : 12/03/2013

مُساهمةموضوع: مساعدة فى عمل مقارنة بين مصفوفتين   الأربعاء مارس 20, 2013 11:11 am

السلام عليكم ورحمة الله وبركاتة

أريد عمل مقارنة بين محتويات ملفين ini

حيث أن كل ملف يحتوى على مجموعة من اللينكات مجهزة مسبقا

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


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

أترك لكم ملف مفتوح للتعديل علية وعمل الازم :

عمل مقارنة بين مصفوفتين

مهم جدا بالنسبة لى لاستكمال برنامج .

علي الفولي يجيب
اذا كانت القيم ثابته لاتتغير بمعنى
Link1 هو نفس Link1 فى الملف الثانى والاختلاف فقط سيكون فى Link زياده
بحيث الملف الاول به 10 Link والملف الثانى به 20 Link هنا الامر سهل عن طريق العدد

الكود:
كود:
gg = INIFile.GetValueNames("AutoPlay\\Docs\\action.ini", "Actions Plugins");
Dialog.Message("",Table.Count(gg));
اما اذا كان كما ارى فى ملفك ان المسارات ربما تختلف فهذا المر يعتمد على التكرار فور
الكود:
كود:
hkk = nil

local a = INIFile.GetValueNames("AutoPlay\\Docs\\action.ini", "Actions Plugins");
local b = INIFile.GetValueNames("AutoPlay\\Docs\\action2.ini", "Actions Plugins");

if Table.Count(a) == Table.Count(b) then

  for s, r in pairs(a) do
 
      local K_a = INIFile.GetValue("AutoPlay\\Docs\\action.ini", "Actions Plugins", r);
      local K_b = INIFile.GetValue("AutoPlay\\Docs\\action2.ini", "Actions Plugins", r);
      if K_a ~= K_b then hkk = true end
 
  end

end



if hkk then Dialog.Message("","ok"); end
عند تحقق المتغير hkk يمكنك فعل ما تشاء حذف محتوى الملف او حتى حذف الملف كله كما تحب

الكود:
كود:
تعديل بسيط

hkk = nil

local a = INIFile.GetValueNames("AutoPlay\\Docs\\action.ini", "Actions Plugins");
local b = INIFile.GetValueNames("AutoPlay\\Docs\\action2.ini", "Actions Plugins");

if Table.Count(a) == Table.Count(b) then

  for s, r in pairs(a) do
 
      local K_a = INIFile.GetValue("AutoPlay\\Docs\\action.ini", "Actions Plugins", r);
      local K_b = INIFile.GetValue("AutoPlay\\Docs\\action2.ini", "Actions Plugins", r);
      if K_a ~= K_b then hkk = true end
 
  end
 
else

  hkk = true
end



if hkk then Dialog.Message("","ok"); end
جواب خالد علي
محاولتك جميلة أخى على
و لكن
أنت إفترضت أن عناصر المصفوفتين يحملان نفس الترتيب
و غالبا ما سيخالف هذا الواقع و لن نحصل على النتائج الصحيحة

أخى الأمير
أنت لم توضح إن كان الحل قد لبى متطلباتك

عموما
لن تسير الأمور كما تتخيل

لديك مصوفتان
سأفترض أن عناصر المصفوفة الأولى أكثر من عناصر المصفوفة الثانية
سيتم عزل عناصر المصفوفة الأولى (الأكبر عناصرا) بحلقة

سيؤخذ كل عنصر من عناصرها و يتم فحص تواجده فى المصفوفة الثانية (الأقل عناصرا) بحلقة أخرى
هنا إحتمالان
true يعنى موجود false تعنى غير موجود
هنا و مباشرة قم بإدراج هذا العنصر الغير موجود فى مصفوفة ثالثة التى ستكون مصفوفة الفروق

طبعا ستكون الصعوبة فى دمج الحلقتين معا بحلقة واحدة
الكود:
كود:
w={}
z=0
x= {1, 2, 3,4,5,6,7};
y= {1, 6, 7};
count = Table.Count(y);
for i,o in pairs  (x) do
  for u,p in pairs  (y) do
        if  o == p then
                  z=z+1
          Table.Insert(w, z, p);
        end
    end
end
for i, s in pairs(w) do
  Input.SetText("Input1", s..","..Input.GetText("Input1"));
end
ضع هذا الكود فى زر فى مشروعك
هنا سيظهر العناصر المشتركة بين المصفوفتين
بالتوفيق

وفقا لما ذكرت و للتلخيص :-
عندما تكون
x= 1, 2, 3,4,5,6,7
و
y= 1,2,3,5

فإن العناصر المتطابقة
الكود:
كود:
w={}
z=0
x= {1, 2, 3,4,5,6,7};
y= {1,2,3,5};
for i,o in pairs  (x) do
  for u,p in pairs  (y) do
        if  o == p then
                  z=z+1
          Table.Insert(w, z, p);
        end
    end
end
for i, s in pairs(w) do
  Input.SetText("Input1", s..","..Input.GetText("Input1"));
end
الناتج = 1 و 2 و 3 و 5

و الفرق بين المصفوفتين
الكود:
كود:
x= {1, 2, 3,4,5,6,7};
y= {1,2,3,5};
count = Table.Count(y);
for i,o in pairs  (y) do
  for u,p in pairs  (x) do
        if  o == p then     
          Table.Remove(x, u);
        end
  end
end
for r, s in pairs(x) do
  Input.SetText("Input1", s..","..Input.GetText("Input1"));
end
الناتج
4 و 6 و 7

بالتوفيق فى برنامج الإضافات الجديد
إلى اللقاء

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

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
ams 4 arab :: منتدى الطلبات والاستفسارات-
انتقل الى: