ايران ويج

نسخه‌ی کامل: تعریف آرایه های دوبعدی یا چندبعدی پویا در دلفی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام Heart
منظور از آرایه ی پویا، آرایه ای است که در هنگام تعریف متغیرها طول آن مشخص نشده و قرار است در زمان اجرا تعیین شود. این کار براحتی توسط زیربرنامه ی SetLength انجام پذیر است.

از آنجایی که تا به حال فقط با آرایه های یک بعدی کار کرده بودم، تعریف یک آرایه دوبعدی پویا برایم تازگی داشت که نتیجه را در اینجا قرار میدهم.

دو روش در زیر آمده:
1ـ استفاده از عبارت کلیدی array of چندین بار پشت سر هم (به تعداد ابعاد آرایه)
2ـ تعریف آرایه از از نوع آرایه

کد php:
procedure TForm1.FormCreate(SenderTObject);
type
 BaseArr 
= array of Byte;
 
MyRGB record
 R
GBByte;
 
end;
 
BaseArr2 = array of MyRGB;
var
 
Arr1: array of BaseArr;
 
Arr2: array of array of Byte;
 
Arr3: array of array of array of Byte;
 
Arr4: array of BaseArr2;
begin
 SetLength
(Arr11010);
 
SetLength(Arr2105);
 
SetLength(Arr33128);
 
SetLength(Arr433);

 
Arr1[00] := 1;
 
Arr1[99] := 81;

 
Arr2[07] := 9;
 
Arr2[97] := 13;

 
Arr3[000] := 0;
 
Arr3[2117] := 0;

 
Arr4[00].:= 255;
 
Arr4[00].:= 128;
 
Arr4[00].:= 0;
end

به دستور Arr2[9, 7] := 13 توجه کنید!Amaze
بعد دوم آرایه ی Arr2 فقط 5 خانه دارد یعنی Index مجاز از صفر تا 4 است!!!
به نظر شما چرا این فرمان اجرا میشود و خطایی رخ نمیدهد؟Confused
وقتی Arr2 را با Watch مشاهده می کنیم همه چیز طبیعی به نظر میرسد ولی...
ولی جالب است بدانید که مقدار 13 واقعاً در مکان 9 و 7 ذخیره شده و قابل دسترسی است.Sad

کد php:
ShowMessage(IntToStr(Arr2[97])); 
مقدار 13 را مشاهده خواهید کرد!!!!

موفق باشید Wink
Confused