الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

رسالة خطأ ناتجة عن التعامل مع المصفوفات ولا اعرف حلها

بدأه أبو حنان في 22 يوليو 2010 · 8 رد · 635 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لديا الكود التالي :

 Dim MyString As String = FrmDoc.RichTextBox.Text
            Dim Words() As String = MyString.Split(" "c)

            Dim FiveWords() As String
                        Dim II As Integer
            Dim FiveWordsOK() As String = {""}



            For i = 0 To UBound(Words)

                GSQLCmd.CommandType = CommandType.Text
                GSQLCmd.CommandText = "Select*  FROM FiveWords WHERE WordWithoutTashkeel LIKE '%" & Words(i) & "%'"


                GDR = GSQLCmd.ExecuteReader

                Do While GDR.Read()
                    'هنا نسند ناتج الاستعلام لمصفوفة الخمس كلمات
                    If GDR.GetSqlString(0).IsNull = False Then

                        'هنا يتم تقسم المصفوفة الخاصة بنتائج الاستعلام
                        FiveWords = Split(GDR.GetSqlString(0))

                        For II = 0 To UBound(FiveWords)

                            If Words(i) = txtto(FiveWords(II)) Then
                                '  MsgBox("نعم الكلمة مطابقة")
                                MsgBox(FiveWords(II))
                                FiveWordsOK(i) = FiveWordsOK(i) + " " + FiveWords(II)


                            End If

                        Next II


                    End If

                    Application.DoEvents()
                Loop


                FrmDoc.RichTextBox.SelectionStart = FrmDoc.RichTextBox.Find(Words(i))
                FrmDoc.RichTextBox.SelectedText = FiveWordsOK(i)

                GDR.Close()


                ' Erase FiveWords
                ' Erase FiveWordsOK

            Next i

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

 Public Function txtto(ByVal txt As String)
        Dim str As String = txt
        Dim ss As String = Nothing
        For i As Integer = 0 To str.Length - 1
            If Char.GetUnicodeCategory(str.Chars(i)) = UnicodeCategory.OtherLetter Or Char.GetUnicodeCategory(str.Chars(i)) = UnicodeCategory.SpaceSeparator Then 
                ss += str.Chars(i)
            End If
        Next
        Return ss
    End Function

ورسالة الخطأ هي Index was outside the bounds of the array.

وتظهر عند السطر التالي :

If Words(i) = txtto(FiveWords(II)) Then

الرجاء تصحيح الكود وبارك الله فيكم

مختار أحمد

موقع الويب : http://www.luxorsystems.com

منتدياتنا :http://www.luxorsystems.com/forum/index.php

للمراسلة

luxorsystems@hotmail.com

للاتصال التليفوني

00201228085123

#2

الخطأ هذا ناتج عن انك تعديت حد المصفوفة ،،

يعني مثلا مصفوفة Words عبارة عن 4 عناصر ، وانت تحاول تعدل أو تقرأ العنصر رقم 5 ،،

#3

أنا أعلم أن الخطأ في المصفوفة ولكن ما هو حلها بالكود السابق ؟؟؟؟

مختار أحمد

موقع الويب : http://www.luxorsystems.com

منتدياتنا :http://www.luxorsystems.com/forum/index.php

للمراسلة

luxorsystems@hotmail.com

للاتصال التليفوني

00201228085123

#4

هل جربت اضافة As String في آخر تعريف الـ Function ؟ ،،

#5

اضف BreakPoint عند السطر اللي فيه الخطأ ، بعدين سو Debug للبرنامج ،،

شوف وين الخطأ من خلال نافذة Autos أو Locals ،،

موفق ،،

#6
profesor-xp كتب:

هل جربت اضافة As String في آخر تعريف الـ Function ؟ ،،

نعم أخي جربت ذلك واصبح التصريح عن الدالة بالشكل التالي :

 Public Function txtto(ByVal txt As String) As String

ومع ذلك يظهر الخطأ مجدداً

هي المشكلة كما تفضلت انت هو تعدي حدود المصفوفة وانا اريد كود لعدم تعديها والمشكلة ان الكود متداخل كما ترى فهناك حلقتين تكراريتين

بارك الله فيك وفي مجهودك

مختار أحمد

موقع الويب : http://www.luxorsystems.com

منتدياتنا :http://www.luxorsystems.com/forum/index.php

للمراسلة

luxorsystems@hotmail.com

للاتصال التليفوني

00201228085123

#7

^

بامكانك وضع شرط قبل الشرط اللي فيه الخطأ ،،

if II > Ubound(fivewords)

Exit For

علشان تتفادى انك تتعدى حدود المصفوفة ،،

تم تعديل هذه المشاركة بواسطة profesor-xp في 22 يوليو 2010 في 20:34

#9

شف الرد رقم 5 اجل ،،

ممكن تلاقي الحل بعد ما تسوي Debug ،،

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…