PDA

View Full Version : آرایه Procedure



diplomat
یک شنبه 17 شهریور 1387, 09:35 صبح
با عرض سلام خدمت دوستان عزیز
آیا کسی میداند چگونه می شود آرایهای از Procedure ساخت

babak_delphi
یک شنبه 17 شهریور 1387, 10:38 صبح
تا جایی که من می دونم :
آرایه باید نوع (Type) داشته باشد و procedure نوع نیست
پس نمی توان این کار را انجام داد
ولی شما مشکلتون رو بگید و توضیح بدید که چه کاری می خواهید انجام بدین
احتمالا راه بهتر و اصولی تری وجود داشته باشه

موفق باشید

Cave_Man
یک شنبه 17 شهریور 1387, 10:41 صبح
من هم با بابک موافقم
البته میتونید یک آرایه از اشاره گر بسازید و آدرس هر Procedure رو به هر عنصر آرایه بدید اینطوری آرایه از Procedure رو بتونید راه بندازید .

vcldeveloper
یک شنبه 17 شهریور 1387, 17:52 عصر
Arr : array [0..9] of TProcedure;
البته در این حالت باید تعریف Procedureهاتون یکسان باشه، مثلا برای TProcedure، تعریفش اینطوری هست:

TProcedure = procedure;

اگر می خواید نوعش را خودتون تعریف کنید، می تونید خودتون یک Type جدید برای Procedureهاتون بسازید:


type
TMyProc = procedure (A: integer);

var
Arr : array [0..9] of TMyProc;


البته اگر نمیخواید Type تعریف کنید، باید یک آرایه از Pointer ها داشته باشید، و آدرس هر Procedure را با استفاده از عملگر @ بدست بیارید و به خانه های آرایه اختصاص بدید:


var
Arr : array [0..9] of pointer;
...
Arr[0] := @Test1;
البته این شیوه به هیچوجه Safe نیست، و باید خیلی در استفاده از آن دقت کنید، چون فقط یک آدرس حافظه را ذخیره می کنید و اصلا نوع تابع، و آرگمان های آن مشخص نیست.