تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكلة بالمصفوفات
#1
السلام عليكم

عندي برنامج بسيط 2 تيكست وبيكتشر
بضع في التيكست الاول اسم والتيكست الثاني يظهر صفاتة والبيكتشر يعرض صورتة

وتاتي الثلاث بيانات من ثلاثة مصفوفات

-1 مصفوفة لاسماء
2- مصفوفة للصفات
3- مصفوفة للصور والصور تاتي من الريسورس
المصفوفات متناسقة كل اسم يقابلة في المصفوفة الاخري صفاتة وبالريسورس صورتة

استخدمت الكود التالي ويعمل ولكن عندما تصل المصفوفة الي اربعين عنصر البرنامج ياخذ وقت مبالغ فية جدا للبحث واظهار النتيجة  اريد طريقة لتجاوز البطء الذي يحدث بالبرنامج او طريقة سريعة لظهور البيانات
مع العلم ان عندد العناصر يفوق 90 عنصر والثلاث مصفوفات متساوية العدد ومرتبة كل ايتم متساوي مع عناصر المصفوفة الاخري


كود :
   Dim WEATHER() As String = {"dog", "the wolf", "the lion"}
       Dim RESULT() As String = {"DANGROUS", "MOST DANGROUS", "MORE DANGROUS"}
       Dim imageresou() As String = {"My.Resources.imag0", "My.Resources.imag1", "My.Resources.imag2"}
       Dim STRL As String = TextBox1.Text
       For i = 0 To WEATHER.Length - 1
           For B = 0 To RESULT.Length - 1
               For v = 0 To WEATHER.Length - 1
                   Dim idx = Array.IndexOf(WEATHER, TextBox1.Text)
                   Dim fullsprite = imageresou(idx)
                   Dim resName = fullsprite.Substring(fullsprite.LastIndexOf("."c) + 1)
                   If idx > -1 Then
                       TextBox3.Text = RESULT(idx)
                       PictureBox1.Image = DirectCast(My.Resources.ResourceManager.GetObject(resName, My.Resources.Culture), Bitmap)
                   Else
                       TextBox3.Text = "لم يتم ادراجة"
                   End If
               Next
           Next
       Next
الرد }}}
تم الشكر بواسطة:
#2
   


.rar   Animals.rar (الحجم : 833.06 ك ب / التحميلات : 42)
الرد }}}
تم الشكر بواسطة: محمد اسماعيل
#3
إضافة صغيرة
بشكل مبدئي
انت تستخدم جملة For....Next كثيرا جدا 
وطالما جميع المصفوفات لها نفس length فقط تحتاج الي For....Next واحدة

عموما أنت لا تحتاج لعمل Loop باستخدام جملة For....Next
لكن و بناء علي المدخلات التي يكتبها المستخدم عليك فقط تحديد index من مصفوفة Weather ثم تستخدمه للحصول علي ما يقابله من معلومات في المصفوفات الأخري
Retired
الرد }}}
تم الشكر بواسطة:
#4
[b]عبدالله الدوسري  ,[b][b]silverlight[/b] [/b][/b]

كل الشكر والتقدير لتعاونكم معي


- فعلا البرنامج بسيط وسهل اشكرك اخي عبد اللّة
- والتعديل حذفت 2 حلقة التكرارية  واشتغلت بواحدة فقط وظبط معايا


وفقكم اللّة لكل خير
الرد }}}
تم الشكر بواسطة:
#5
اصلا انت مش محتاج استخدام For .... Next نهائيا
فقط تحصل علي index كما فعلت في الكود الخاص بك


PHP كود :
Dim idx = Array.IndexOf(WEATHERTextBox1.Text

ومنه تسترد البيانات من المصفوفات الأخري

PHP كود :
IF -<> inx Then
    TextBox3
.Text RESULT(idx)
 
   PictureBox1.Image ImageArray(idx)
 Else
 
    TextBox3.Text "لم يتم ادراجة"
End IF 
Retired
الرد }}}
تم الشكر بواسطة:
#6
(07-04-18, 03:52 PM)silverlight كتب : اصلا انت مش محتاج استخدام For .... Next نهائيا
فقط تحصل علي index كما فعلت في الكود الخاص بك


PHP كود :
Dim idx = Array.IndexOf(WEATHERTextBox1.Text

ومنه تسترد البيانات من المصفوفات الأخري

PHP كود :
IF -<> inx Then
    TextBox3
.Text RESULT(idx)
 
   PictureBox1.Image ImageArray(idx)
 Else
 
    TextBox3.Text "لم يتم ادراجة"
End IF 

هراجع الكود بدون تكرار وارد عليك

(07-04-18, 03:52 PM)silverlight كتب : اصلا انت مش محتاج استخدام For .... Next نهائيا
فقط تحصل علي index كما فعلت في الكود الخاص بك


PHP كود :
Dim idx = Array.IndexOf(WEATHERTextBox1.Text

ومنه تسترد البيانات من المصفوفات الأخري

PHP كود :
IF -<> inx Then
    TextBox3
.Text RESULT(idx)
 
   PictureBox1.Image ImageArray(idx)
 Else
 
    TextBox3.Text "لم يتم ادراجة"
End IF 

كلامك صحيح تماما , دائما نستفيد من خبرتكم
كل الي جة في تفكيري اني بحثت بالمصفوفة الاولي فهحتاج حلقة ربط للمصفوفة التالية بالاولي

هل معني هذا ان المتغير IDX اعطي القيمة وتم تمريرها علي جميع المصفوفات بشرط تكون نفس عدد العناصر صح كدة
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم