كشف Vsual Basic) ReDim)
يعيد تعين مساحة التخزين لمتغر صفيف.
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
الأجزاء
Preserve
اختياري. الـمعدّل المستخدم لحفظ البيانات في الصفيف الموجود عندما تغير الحجم للبعد الأخير فقط..name
مطلوبة. إسم متغير الصفيف. انظر أسماء العنصر المعرفboundlist
مطلوبة. قائمة حدود لكل بُعد لصفيف معاد تعريفة.
ملاحظات
يمكنك استخدام كشف ReDim لتغيير حجم بعد صفيف واحد أو أكثر الذي تم بالفعل التصريح عنه. إذا كان لديك صفيف كبير و لم تعد تحتاج لبعض عناصره, ReDim يمكن أن يحرر ذاكرة عن طريق تقليل حجم الصفيف. على الصعيد الأخر, اذا حددت التعليمات البرمجية أن صفيف يحتاج الى المزيد من العناصر,ReDim يمكن أن يضيفهم.
كشفReDim عمله فقط للصفائف. انه من الغير الصالح على المقاييس (متغيرات تحوي فقط على قيمة فردية), مجموعات أو بنيات. لاحظ أنه اذا عرفت متغير من نوع Array، كشف ReDim لا تحتوي على معلومات نوع معينة لانشاء صفيف جديد.
يمكنك استخدام ReDim فقط في مستوى الاجراء. وهذا يعني تعريف السياق لمتغير يجب أن يكون اجراء و لا يمكن أن يكون ملف مصدر، مساحة اسم، فئة, بنية, وحده نمطية أو مقطع. لمزيد من المعلومات، راجع سياقات الـتعريف و مستويات الوصول الافتراضية.
القواعد
معدلات يمكنك تحديد فقط معدل Preserve ,و لا يمكن حذف ReDim الكلمة الأساسية في حالة القيام بذلك.
متغيرات متعددة. يمكنك تغيير حجم متغيرات الصفيف متعددة في نفس كشف التعريف, محدداً name و boundlist الأجزاء لكل منها. يتم فصل المتغيرات المتعددة بفواصل.
حدود الصفيف. كل إدخال في boundlist يمكن أن تحدد الحدود السفلية و العليا لهذا البعد. الحد الأدنى هو دوماً الصفر، سواء قمت بتحديده أم لا. الحد الأعلى يمثل أعلى قيمة ممكنة للمنخفض، وليس طول البعد (وهو الحد الأعلى زائد واحد). كل نص يتراوح من صفر إلى حده الأعلى.
عدد الأبعاد في boundlist يجب أن تطابق التصنيف الأصلي للصفيف.
الصفائف الفارغة. من الممكن استخدام -1 لتعريف الحد الأعلى لبُعد الصفيف. وهذا يدل على أن الصفيف فارغ ولكن ليس لا شيء (Visual Basic). لمزيد من المعلومات، راجع الصفائف في Visual Basic. ومع ذلك، فإن التعليمات البرمجية لـ Visual Basic لا يمكنها بشكل ناجح الوصول لمثل هذا الصفيف. إذا حاولت القيام بذلك، الخطأ IndexOutOfRangeException يحدث أثناء التنفيذ.
أنواع البيانات. كشفReDim لا يمكنه تغيير نوع البيانات لمتغير الصفيف أو العناصر الخاصة به.
التهيئة. كشفReDim لا يمكنه توفير قيم تهيئة جديدة لعناصر الصفيف.
الرتبة. كشفReDim لا يمكنه الصنف (عدد الأبعاد) للصفيف.
تغيير الحجم مع الاحتفاظ.. إذا كنت تستخدم Preserve، يمكنك تغيير حجم البعد الأخير من الصفيف فقط, و لكل بعد أخرى يجب تحديد نفس الحد الذي لديه بالفعل في الصفيف الموجود.
على سبيل المثال، إذا كان للصفيف بعد واحد فقط, يمكنك تغيير حجم ذلك البعد و الحفاظ في نفس الوقت كل محتويات الصفيف, لأنك تغير أخر و البعد الوحيد. ومع ذلك، إذا كان الصفيف لديه بعدين أو أكثر, يمكنك تغيير حجم البعد الأخير فقط اذا استخدمت Preserve.
الخصائص. يمكنك استخدام ReDim على خاصية التي تحمل صفيف من القيم.
السلوك
استبدال الصفيفReDim تحرر الصفيف الموجود و تنشئ صفيف جديد بنفس التصنيف. الصفيف الجديد يحل محل الصفيف المحرر في متغير الصفيف.
الـتهيئة دون الاحتفاظ.. إذا لم تقم بتعيين Preserve, ReDim يهيئ العناصر للصفيف الجديد للقيمة الافتراضية لأنواع بيناتهم.
الـتهيئة مع الاحتفاظ.. إذا حددت المعدل Preserve ، ينسخ Visual Basic العناصر من الصفيف الموجود إلى الصفيف الجديد.
مثال
المثال التالي يزيد من حجم البعد الأخير للصفيف الديناميكي دون فقدان أي بيانات موجودة في الصفيف, و من ثم يقلل من الحجم مع فقدان بيانات جزئي. وأخيراً، تقلل من الحجم و ترجعة الى قيمته الأصلية و تعيد تهيئة كل عناصر الصفيف.
Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)
الـأولReDim ينشئ صفيف جديد الذي يحل محل الصفيف الموجود في المتغير intArray. ReDim ينسخ كل العناصر من الصفيف الموجود الى الصفيف الجديد. و تضيف أيضا 10 أعمدة اضافية في نهاية كل صف في كل طبقة و تهيئ العناصر في هذه الأعمدة الجديدة الى 0 (القيمة الافتراضية لـ Integer، نوع العنصر للصفيف).
الثانيReDim ينشئ صفيف جديد آخر, ناسخة كل عناصر المناسبة. على الرغم من ذلك، يتم فقد خمسة أعمدة في نهاية صف في كل طبقة . هذه ليست مشكلة في حالة الانتهاء من استخدام هذه الأعمدة. تقليل حجم صفيف كبير يمكن أن يحرر ذاكرة التي لا تحتاجها بعد الأن.
الثالثReDim يقوم بإنشاء صفيف جديد آخر أيضا,مما يزيل خمسة أعمدة أخرى من نهاية كل صف في كل طبقة. هذه المرة لا تنسخ أي عناصر موجودة. وهذا يعيد الصفيف إلى حجمه الأصلي الصفيف ويقوم بإرجاع كل عناصره إلى قيمتها الافتراضية الأصلية.