رايه ها در دلفي
دلفي به ما امکان مي دهد آرايه هايي از هر نوع متغييري را ايجاد کنيم. براي تعريف آرايه به صورت زير عمل ميکنيم:
var
array[indexType1, ..., indexTypen] of baseType;

در اين تعريف براي نامگذاري آرايه، از قانون نامگذاري متغييرها استفاده ميکنيم و مقدار اوليه را نيز درون يک جفت کروشه قرار مي دهيم.
نکته: شما مي توانيد به جاي استفاده از کروشه [] از ترکيب پرانتز نقطه استفاده کنيد:
d(.i.):= 3 + i; // Equivalent d:= 3 + i;
نکته: وقتي که شما يک آرايه را تعريف مي کنيد احتياجي نداريد که به آن مقدار کمترين يا بيشترين بدهيد:
var
A : array [Boolean] of integer;
begin
A[True] := 50;
A[False] := 100;
end;
نکته: توابع Low و High کران هاي پايين وبالاي يک متغيير آرايه اي يا نوعي يا ترتيبي را بر ميگردانند:
for I := 0 to High(X) do S := S + X;
آرايه هاي ثابت:
آرايه هاي ثابت مي توانند توسط ساختار ثابت نوع دلفي تعريف شود. نوع ثابت که هميشه با عبارت Const تعريف مي شود، نه تنها مانع تغيير مقدار پارامتر مي شود، بلکه کدهاي بهينه بيشتري براي رشته ها و رکوردهاي رد شده به توابع توليد مي کند. ما هنگامي از اين نوع استفاده مي کنيم که نخواهيم مقدار رد شده به يک تابع تغيير کند.
type
TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);
const
DayNames : array [TDay] of String[9] = ('Sunday', 'Monday', 'Tuesday',
'Wednesday', 'Thursday',
'Friday', 'Saturday');
var
Today : TDay;
begin
Today := TDay(DayOfWeek(Date) - 1);
ShowMessage('Today is ' + DayNames[Today] + '!');
end;
آرايه هاي ديناميکي:
آرايه هاي ديناميکي، آرايه هاي تحليلي پويايي هستند که ابعاد آنها موقع کامپايل شدن شناخته شده نيست. براي اعلان آنها کافي است يک آرايه بدون بعد تعريف کنيد:
var MyFlexibleArray: array of Real;
قبل از به کار گيري آرايه هاي ديناميکي، ابتدا بايد از رويه SetLength براي تخصيص حافظه آرايه استفاده کرد:
SetLength (MyFlexibleArray, 2; (
نکته: آرايه هاي ديناميکي هميشه مبتني بر صفر مي باشند.
نکته: شما مي توانيد آرايه هاي ديناميکي را قبل از رسيدن به ترک قلمرو از حافظه خارج کنيد:
MyFlexibleArray := nil;
نکته: مقدار حافظه اي که در اختيار آرايه قرار ميگيرد، به طول آرايه ونوع عناصر آن بستگي دارد. به عنوان مثال اگر آرايه اي از نوع صحيح به طول 10 داشته باشيم 4*10 بايت حافظه به آن اختصاص مي يابد.
فشرده سازي آرايه ها:
در دلفي شما هنگامي که ساختار خود را تعيين کرديد مي توانيد با استفاده از کلمه کليدي packed اطلاعات ذخيره شده خود را متراکم کنيد:
type TNumbers = packed array[1..100] of Real;
نکته: استفاده از packed سرعت دسترسي به اطلاعات را کند ميکند. در مورد آرايه اي از کاراکترها اين مورد سازگارتر مي باشد.
آرايه هاي چند بعدي ديناميکي:
براي تعريف آرايه هاي چند بعدي ديناميکي، تنها کافي است ...array of را در ساختار خود تکرار کنيد. به طور مثال:
type
TMessageGrid = array of array of string;
var
Msgs: TMessageGrid;
اين تعريف يک آرايه دو بعدي از رشته ها مي باشد. سپس بايد به آرايه خود فضا نسبت داد:
SetLength(Msgs, I, J);
شما مي توانيد آرايه هاي چند بعدي ديناميکي خود را به صورت غير مستطيلي (Not Rectangular) ايجاد کنيد. ابتدا رويه SetLength را صدا زده و پارامتر بعد اول را بدهيد:
var
Ints: array of array of Integer;
SetLength(Ints, 10);
ما 10 سطر به آرايه خود اختصاص داديم. از اين پس، شما مي توانيد ستونهاي خود را در هر زمان (با اندازه هاي مختلف) تخصيص دهيد:
SetLength(Ints[2], 5);