۱۰-آذر-۱۳۸۹, ۰۰:۴۳:۴۹
سلام
منظور از آرایه ی پویا، آرایه ای است که در هنگام تعریف متغیرها طول آن مشخص نشده و قرار است در زمان اجرا تعیین شود. این کار براحتی توسط زیربرنامه ی SetLength انجام پذیر است.
از آنجایی که تا به حال فقط با آرایه های یک بعدی کار کرده بودم، تعریف یک آرایه دوبعدی پویا برایم تازگی داشت که نتیجه را در اینجا قرار میدهم.
دو روش در زیر آمده:
1ـ استفاده از عبارت کلیدی array of چندین بار پشت سر هم (به تعداد ابعاد آرایه)
2ـ تعریف آرایه از از نوع آرایه
به دستور Arr2[9, 7] := 13 توجه کنید!
بعد دوم آرایه ی Arr2 فقط 5 خانه دارد یعنی Index مجاز از صفر تا 4 است!!!
به نظر شما چرا این فرمان اجرا میشود و خطایی رخ نمیدهد؟
وقتی Arr2 را با Watch مشاهده می کنیم همه چیز طبیعی به نظر میرسد ولی...
ولی جالب است بدانید که مقدار 13 واقعاً در مکان 9 و 7 ذخیره شده و قابل دسترسی است.
مقدار 13 را مشاهده خواهید کرد!!!!
موفق باشید
منظور از آرایه ی پویا، آرایه ای است که در هنگام تعریف متغیرها طول آن مشخص نشده و قرار است در زمان اجرا تعیین شود. این کار براحتی توسط زیربرنامه ی SetLength انجام پذیر است.
از آنجایی که تا به حال فقط با آرایه های یک بعدی کار کرده بودم، تعریف یک آرایه دوبعدی پویا برایم تازگی داشت که نتیجه را در اینجا قرار میدهم.
دو روش در زیر آمده:
1ـ استفاده از عبارت کلیدی array of چندین بار پشت سر هم (به تعداد ابعاد آرایه)
2ـ تعریف آرایه از از نوع آرایه
کد php:
procedure TForm1.FormCreate(Sender: TObject);
type
BaseArr = array of Byte;
MyRGB = record
R, G, B: Byte;
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(Arr1, 10, 10);
SetLength(Arr2, 10, 5);
SetLength(Arr3, 3, 12, 8);
SetLength(Arr4, 3, 3);
Arr1[0, 0] := 1;
Arr1[9, 9] := 81;
Arr2[0, 7] := 9;
Arr2[9, 7] := 13;
Arr3[0, 0, 0] := 0;
Arr3[2, 11, 7] := 0;
Arr4[0, 0].R := 255;
Arr4[0, 0].G := 128;
Arr4[0, 0].B := 0;
end;
به دستور Arr2[9, 7] := 13 توجه کنید!
بعد دوم آرایه ی Arr2 فقط 5 خانه دارد یعنی Index مجاز از صفر تا 4 است!!!
به نظر شما چرا این فرمان اجرا میشود و خطایی رخ نمیدهد؟
وقتی Arr2 را با Watch مشاهده می کنیم همه چیز طبیعی به نظر میرسد ولی...
ولی جالب است بدانید که مقدار 13 واقعاً در مکان 9 و 7 ذخیره شده و قابل دسترسی است.
کد php:
ShowMessage(IntToStr(Arr2[9, 7]));
موفق باشید