PDA

View Full Version : سوال: آرايه با طول متغيير



f_g1348
دوشنبه 21 فروردین 1391, 09:25 صبح
با سلام
دوستان چطور ميتونم تو برنامه يه آرايه 2 بعدي تعريف كنم كه طول هر 2 بعدش متغيير باشه و مقادير قبلي پاك نشه؟ مثلاً ابعادش (3و2) باشه با مقادير درونشون بعد ابعادش بشه (4و5) و مقادير قبلي سرجايشان باشند و مقادير جديد در ادامه بيايند ؟

hakim22
دوشنبه 21 فروردین 1391, 11:32 صبح
کدش اینه :

Dim x, y As Integer
x = 5
y = 7


Dim myArr(,) As Integer
ReDim Preserve myArr(x, y)



کلمه ی کلیدی Preserve همونی هست که کاری میکنه داده های آرایه سر جاشون بمونن و تعدادشون فقط زیاد بشه.

اما پیشنهاد من اینه شما یک آرایه ی دو بعدی تعریف کنید و به تعداد دلخواه اونو به ArrayList اضافه کنید. از قدرت دات نت به راحتی میتونید استفاده کنید.

Hybrid
دوشنبه 21 فروردین 1391, 11:49 صبح
سلام دوستان ، چند خط توضیح اضافه بدم "

کلمه ی ذخیره شده Redim فقط میتونه بعد آخر یک آرایه چند بعدی رو تغییر بده ، یعنی لگه شما کد زیر رو بنویسید :


Dim x, y As Integer
x = 3
y = 55

Dim a(2, 2) As Integer

ReDim Preserve a(x, y)

با خطای


'ReDim' can only change the rightmost dimension.
مواجه میشین ، واسه جواب شما پیشنهادم اینه ،که یک آرایه دیگه بسازید و اجزای داخل آرایه قبلی رو درون آرایه ای که با بعد جدید ایجاد کردین کپی کنین چیزی شبیه کد زیر :


Dim a(1, 1) As Integer
a(0, 0) = 1
a(0, 1) = 2
a(1, 0) = 3
a(1, 1) = 55


Dim b(3, 5) As Integer

Array.Copy(a, b, a.Length)

موفق باشید./