PDA

View Full Version : مزيت هاي دلفي بر پاسكال چيست



mehdi592
شنبه 16 آذر 1387, 20:50 عصر
دوستان كسي ميتونه يه مقاله اي فارسي يا امگليسي در رابطه با مزيت هاي دلفي نسبت به پاسكال قرار بده
تشكر

يه سئوال ديگه آقا خروجي فايل پاسكال مثل دلفي فقط
exe
هست يا با فايل نهايي فايل هاي ديگه هم دخيره ميشوند؟

دنیای دلفی
یک شنبه 17 آذر 1387, 00:16 صبح
خوب بزرگترين مزيت Delphi نسبت به پاسكال شي گرايي آن است و افزايش امكانات توابع كلا دلفي آخرشه . واصلا مقايسه آن با جدش پاسكال از لحاظ شرعي مشكل دارد .

بله دلفي نيز چون VCL است يك Exe توليد مي كند و اگر به DLL خاصي وابستش نكرده باشي با همان EXE مي تواني حالشو ببري .

mehdi592
پنج شنبه 21 آذر 1387, 20:12 عصر
ممنون از شما دوست عزیز و گرامی
اگه یه نفر یه لطفی بکنه و یه مقایسه یا تفاوت بین این دو زبان را واسه من مقاله ای در حدود چند صفحه بزاره ممنون میشم
مثلا مقایسه ای بین کامپایلر های اون ها یا پیشرفت هایی که دلفی نسبت به پاسکال داشته
یا مثلا یه مقایسه جدولی مثل این باشه خیلی عالی میشه

Feature D C C++ C# Java Delphi Eiffel Ada Haskell Sather Common Lisp Smalltalk Perl Python Ruby
Static typing Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Optional (Lib) No No No No
Dynamic typing/polymorphism No Polymorphic Polymorphic Dynamic Dynamic Dynamic Dynamic
Garbage Collection Yes No No Yes Yes No Yes Unspec Yes Yes Yes Yes Yes Yes Yes
Strong typedefs Yes No No No No Yes Yes Yes Yes N/A N/A N/A N/A N/A
Aliases Yes Yes Yes Yes For Objects Only Yes Yes Yes Yes Yes Yes Yes Yes Yes
Constants Yes No Yes Yes For Non-Objects? Only Yes
Value types D C C++ C# Java Delphi Eiffel Ada Haskell Sather Common Lisp Smalltalk Perl Python Ruby
Typed Enumeration/Boolean Yes Yes (booleans) Yes Yes Yes (v1.5) Yes No Yes Yes Keywords Lib Yes (booleans)
Long double floating point (80bit) Yes Yes Yes Lib No Yes Yes Yes Most Most Yes (no single precision floats)
Complex and Imaginary Yes Yes Lib (std.) Lib No No Yes Std. Lib. Yes Yes Most Lib Yes Lib
واسه درس طراحی زبان های برنامه سازی میخوام مقاله را تشکر و سپاس فراوان والا هیچ سایتب را پیدا نکردم که بهتر از این سایت در زمینه دلفی باشه

shask00l
پنج شنبه 21 آذر 1387, 21:33 عصر
دوست عزیز

به نظر شما اتومبیل و هواپیما چه تفاوتهایی با هم دارند .؟
به نظر شما کسی پیدا میشه که بیاد امکانات این دو رو با هم مقایسه کنه .؟

تفاوت پاسکال و دلفی هم تقریبا همین حدوده . مقایسه این دو کار درستی نیست و فکر نمیکنم به نتیجه خاصی برسه .
ممکنه کسی بگه که مثلا : ماشین 4 تا چرخ داره ولی هواپیما 12 تا یا مثلا ماشین 1 موتور داره ولی هواپیما 4 تا . ولی مطمئنا خودتون هم میدوننین که این مقایسه هیچ ارزشی نداره .
البته اگه استاد گیر داده که حتما باید همین باشه . پیشنهاد میکنم specification مربوط به پاسکال و دلفی رو ترجمه کن و بده بهش . باز هم تاکید میکنم که ایندو رو نمیشه به همین سادگی با هم مقایسه کرد .
موفق باشید

accpascal
پنج شنبه 21 آذر 1387, 22:24 عصر
با اجازه دوستان من هم نظر خود را به این صورت مطرح می نمایم
دلفی همان پاسکال تکامل یافته است واین سیر تکاملی ادامه خواهد یافت مثل تکامل داس تا ویندوز
بنابراین این دورا نمی توان مقایسه نمود زیرا که وجوه مشترکی برای مقایسه ندارند

mehdi592
پنج شنبه 21 آذر 1387, 23:21 عصر
دوست عزیز

به نظر شما اتومبیل و هواپیما چه تفاوتهایی با هم دارند .؟
به نظر شما کسی پیدا میشه که بیاد امکانات این دو رو با هم مقایسه کنه .؟

تفاوت پاسکال و دلفی هم تقریبا همین حدوده . مقایسه این دو کار درستی نیست و فکر نمیکنم به نتیجه خاصی برسه .
ممکنه کسی بگه که مثلا : ماشین 4 تا چرخ داره ولی هواپیما 12 تا یا مثلا ماشین 1 موتور داره ولی هواپیما 4 تا . ولی مطمئنا خودتون هم میدوننین که این مقایسه هیچ ارزشی نداره .
البته اگه استاد گیر داده که حتما باید همین باشه . پیشنهاد میکنم specification مربوط به پاسکال و دلفی رو ترجمه کن و بده بهش . باز هم تاکید میکنم که ایندو رو نمیشه به همین سادگی با هم مقایسه کرد .
موفق باشید


با تشكر از شما
آقا درست همينه كه ميگيد استاد گير داده تازه 5 نمره هم داره بايد ارائه هم بدم به صورت كنفرانس تا دو هفته ديگه اگه مطلبي انگليسي هم باشه ممنون ميشم بگذاريد
با تشكر از همگي

حالا چند سئوال از اساتيد
تو پاسكال كلاس داريم؟ چون تو دلفي داريم ممنون ميشم يه تعريف از اين كلاس بگيد چي هست
و گويا تو دلفي كتابخانه vlc داريم كه تو پاسكال نيست اين هم اگه كسي ميدونه چيه ممنون ميشم
؟
سئوال بعدي تو پاسكال واسه گرفتن حافظه و پس دادن ( free(اون مثل دلفي آيا روشي هست؟؟:لبخندساده:

shask00l
جمعه 22 آذر 1387, 00:58 صبح
ببین دوست عزیز
من برنامه نویس دلفی نیستم . با دات نت کار میکنم . امیدوارم جوابهام کمکت کنه اگر هم ناقص بود دوستان لطف کنن و نقوض رو ذکر کنند .



تو پاسكال كلاس داريم؟ چون تو دلفي داريم ممنون ميشم يه تعريف از اين كلاس بگيد چي هست


جواب این سوالتون تقریبا به اندازه یک کتابه ... ولی فکر میکنم در ساده ترین شکل بشه کلاس رو اینجوری تعریف کرد .
کلاس مکانیزمیست که جهت پیاده سازی اشیاء , که در زبان های شیئ گرا مورد استفاده قرار میگیرد.



و گويا تو دلفي كتابخانه vlc داريم كه تو پاسكال نيست اين هم اگه كسي ميدونه چيه ممنون ميشم
؟


اکثر کمپانی هایی که زبان برنامه نویسی تولید میکنند برای راحتی کار برنامه نویسان یک سری کتابخانه در زمینه های مختلف همراه زبان مربوطه عرضه میکنن . که کارهای معمولی و پرکاربرد رو انجام بده و برنامه نویس مجبور نشه دوباره اونا رو بنویسه .. مثلا تابع abs که مربوط به محاسبه قدر مطلق میشه . و ....
مایکروسافتی ها مجموعه ای به نام dotnet framework دارند که مجموعه ایست از کلاسهای آماده و .....
توی دلفی هم فکر کنم vcl یک همچین چیزی باشه .



سئوال بعدي تو پاسكال واسه گرفتن حافظه و پس دادن ( free(اون مثل دلفي آيا روشي هست؟؟:لبخندساده:

توی اکثر زبانهای ویژوال که تحت ویندوز کار میکنن یک سامانه وجود داره به نام garbage collector(البته این اسم مربوط به دات نت میشه .ممکنه جاهای دیگه اسمش فرق بکنه ولی مفهومشون یکیه) . کار این سامانه اینه که بگرده دنبال متغییر ها و کلاس هایی که دیگه کاربردی ندارند و برنامه های مربوط به اونا بسته شدن . بعد از پیدا کردن همچین چیزی بصورت اتوماتیک اونارو پاک میکنه . توی دلفی هم باید همچین چیزی وجود داشته باشه . البته روش دستی هم برای انجام این کار هست . توی دات نت هر کلاسی 1 متد dispose داره که کار free کردن حافظه مربوطه انجام میده .

امیدوارم که کمک کرده باشم .

mehdi592
جمعه 22 آذر 1387, 17:01 عصر
با تشكر از دوست عزيز دوستان در مورد پاسكال اطلاعي نداريد؟
آيا كلاس در پاسكال موجود هست؟
آيا روش garbage collector در پاسكال هم هست و توسط چه دستوري
تشكر

vcldeveloper
جمعه 22 آذر 1387, 17:12 عصر
آيا كلاس در پاسكال موجود هست؟
بله.


آيا روش garbage collector در پاسكال هم هست و توسط چه دستوري
نه پاسکال، نه دلفی، بر خلاف زبان های Managed شده مثل جاوا یا #C، مکانیزم Garbage Collection که روی همه داده ها کار کنه، ندارند. استثناء آن در دلفی هست که Interfaceها، و برخی نوع های داده مثل string و Dynamic Array را بصورت Reference-counted مدیریت میکنه.


برای همچین تحقیقی، باید درباره پاسکال و دلفی خوب مطالعه کنید، یا همچین سوالاتی، چیزی از نمره تحقیق عایدتان نمیشه!
برای شروع، دو تا کتاب مجانی Marco Cantu نوشته، با نام های Essential Pascal و Essential Delphi که می تونید از آنها شروع کنید. بعدش می تونید به تغییرات دلفی از دلفی 7 تا دلفی 2007، و دلفی 2007 تا دلفی 2009 مراجعه کنید، که بصورت لیست شده، در سایت CodeGear موجود هست.

علاوه بر اینها، باید مطالعه ایی هم درباره گذر از برنامه های 16 بیتی به 32 بیتی داشته باشید. درباره تفاوت های DOS و Windows هم باید تحقیق کنید. درباره تفاوت های Structural Programming و Object-Oriented Programming هم اگر تحقیق کنید، اطلاعات خوبی بدست میارید. درباره VCL و نقش آن در برنامه های دلفی هم می تونید در کتاب های دلفی مثل Delphi 6 Developers Guide یا Mastering Delphi تحقیق کنید. درباره برنامه های بانک اطلاعاتی و قابلیت های دلفی در کار با انواع بانک های اطلاعاتی هم می تونید تحقیق کنید.

mehdi592
جمعه 22 آذر 1387, 17:49 عصر
نه پاسکال، نه دلفی، بر خلاف زبان های Managed شده مثل جاوا یا #C، مکانیزم Garbage Collection که روی همه داده ها کار کنه، ندارند. استثناء آن در دلفی هست که Interfaceها، و برخی نوع های داده مثل string و Dynamic Array را بصورت Reference-counted مدیریت میکنه.


برای همچین تحقیقی، باید درباره پاسکال و دلفی خوب مطالعه کنید، یا همچین سوالاتی، چیزی از نمره تحقیق عایدتان نمیشه!
برای شروع، دو تا کتاب مجانی Marco Cantu نوشته، با نام های Essential Pascal و Essential Delphi که می تونید از آنها شروع کنید. بعدش می تونید به تغییرات دلفی از دلفی 7 تا دلفی 2007، و دلفی 2007 تا دلفی 2009 مراجعه کنید، که بصورت لیست شده، در سایت CodeGear موجود هست.

علاوه بر اینها، باید مطالعه ایی هم درباره گذر از برنامه های 16 بیتی به 32 بیتی داشته باشید. درباره تفاوت های DOS و Windows هم باید تحقیق کنید. درباره تفاوت های Structural Programming و Object-Oriented Programming هم اگر تحقیق کنید، اطلاعات خوبی بدست میارید. درباره VCL و نقش آن در برنامه های دلفی هم می تونید در کتاب های دلفی مثل Delphi 6 Developers Guide یا Mastering Delphi تحقیق کنید. درباره برنامه های بانک اطلاعاتی و قابلیت های دلفی در کار با انواع بانک های اطلاعاتی هم می تونید تحقیق کنید.
ممنون علي جان از اطلاعات خوبتون
شما درست ميفرمائيد ولي من تا يك هفته ديگه اصلا وقت چنين كارهايي را كه فرموديد ندارم
ميخوام چند صفحه از تحقيقم را در مورد garbage collector
بزارم
تو پاسكال كه بنا به فرموده شما وجود نداره تو دلفي گويا هست ممنون ميشم مقاله اي آموزشي در مورد چگونگي اون در دلفي داريد بزاريد يه مقاله پيدا كردم ولي انگليسيم ياد خوب نيست چيزي نفهميدم
علي آقا اگه بتونيد برا يه مقاله لاتين حدود 10 صفحه اي در مورد مقايسه اين ها پيدا كنيد يه دنيا لطف كرديد ميدم بيرون ترجمه كنند و از شر اين پروژه راحت ميشم
http://dn.codegear.com/article/28217
يه مطلب جالب بچه ها تو گوگل بزنيد
مزيت دلفي به پاسكال
همين تايپيك را اولين سرچش مياره!
ممنون از همه اساتيد بزرگ

vcldeveloper
جمعه 22 آذر 1387, 21:45 عصر
تو پاسكال كه بنا به فرموده شما وجود نداره تو دلفي گويا هست
نه، هیچکدوم Garbage Collector ندارند. فقط در دلفی بعضی از نوع های داده، مکانیزمی برای شمارش مرجع دارند. در هر حال، اون چیزی که تحت عنوان Garbage Collection در زبان هایی مثل #C یا جاوا مطرح میشه، برای دلفی وجود نداره. شما هم بهتر هست خودتون رو درگیر این بحث نکنید، چون ازش به نتیجه خاصی نمی رسید.
در ضمن، من مقاله ایی برای مقایسه پاسکال با دلفی سراغ ندارم.

mehdi592
شنبه 23 آذر 1387, 21:32 عصر
با تشكر از استاد علي عزيز
علي جان با استاد رفتم صحبت كردم و قانع شد در مورد شباهتشون هم ميتونم تحقيق كنم گويا كارم خيلي راحت شد

حالا ميخوام در مورد مديريت حافظه چند صفحه بنيسم مطلبش هم پيدا كردم بي زحمت يه نگاه بندازيد اين مطلب در مورد دلفي هست ميخوام ببينم تو پاسكال هم دقيقا مديريت حافظه مثل همين هست
با تشكر از استاد گرامي علي آقا


تخصیص خودکار حافظه
وقتی شما از نوع‌های پایه (Integer ،real ،word و…) برای ایجاد متغییرهای خود استفاده می کنید، هیچ نگرانی درباره تخصیص حافظه آن وجود ندارد چون دلفی خودش آنرا تخصیص حافظه می کند و سپس آزاد میکند.



type
TDay = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)
var
Name : String; {256 Bytes}
X, Y : Integer; {4 + 4 = 8 Bytes}
List : array [0..10] of Double; {8 * 11 = 88 Bytes}
Today : TDay; {1 Byte}


دراین نمونه پس از پایان برنامه، تمام حافظه تخصیص داده شده فراخوانی و آزاد می شود.


تخصیص حافظه دینامیکی
در این حالت برنامه نویس احتیاج دارد تا انباره حافظه را شخصا" تخصیص و آزاد کند.

نوع Pointer
اشاره‌گرها در دلفی می‌توانند شکل‌های مختلفی را در برگیرد. نخست، نوع اشاره‌گری که یک آدرس حافظه را برای نوع ویژه‌ای از داده، همانند صحیح، رشته و غیره نگه میدارد (Typed Pointer).



var
;Number : ^Integer
;Name : ^String


دوم، اشاره‌گرهای بدون نوع. اشاره‌گرهای بدون نوع (Untyped Pointers) خیلی به نوع معمولی خود شبیه هستند. اما محدودیت‌هایی مثل اینکه باید به نوع خاصی اشاره (Point) کند را ندارد.


var
;Something : Pointer


حال اشاره‌گر بدون نوع ما می تواند به هر نوعی از داده اشاره کند. برای تخصیص حافظه آن، از کمپلکس بیش از یک بیت استفاده میکنیم. برای مثال برنامه زیر کامپایل می شود ولی در زمان اجرا حافظه‌ای تخصیص نمیشود.



begin
New(Something);
Dispose(Something);
end;


برای تخصیص حافظه کامپایلر باید بداند که نوع داده ما برای تخصیص حافظه چیست:



type
IntPtr = ^Integer;

var
Something : Pointer;
begin
Something := New(IntPtr);
Integer(Something^) := 10;
Dispose(Something);
end;



تخصیص بلاکی از حافظه
ما می‌توانیم از اشاره به بلاک‌هایی از تخصیص حافظه در سیستم استفاده کنیم. این کار را با رویه‌های GetMem و FreeMem برای تخصیص و آزاد سازی حافظه استفاده میکنیم.


var
Something : Pointer
begin
GetMem(Something, 100);
FreeMem(Something, 100);
end;



اشاره به حافظه از قبل تخصیص داده شده
هر دو نوع اشاره‌گرها می توانند به هر جایی از حافظه اشاره بکنند. این بدان معناست که آنها می‌توانند اشاره به فضای اشغال شده با داده‌هایی که در حال حاضر موجودند داشته باشند. این نمونه اشاره‌گر احتیاجی به تخصیص حافظه ندارد.


var
Something : Pointer;
MyString : PChar; // type PChar = ^Char;

begin
GetMem(Something, 100);
MyString := Something;
StrCopy(Something, 'Hello World');
FreeMem(Something, 100);
end;


حافظه Heap
Heap شامل قسمتی از حافظه موجود در یک برنامه است که آنرا حافظه پویا می نامیم. Heap بخشی است که در آن تخصیص و تعریف حافظه به صورت تصادفی (Random) اتفاق می‌افتد. این به آن معناست که اگر شما سه بلاک از حافظه را به طور متوالی تخصیص دهید، می توانید بعد از هر دستور آنرا از بین ببرید. مدیر Heap جزئیات را برای شما نگهداری می کند. بنابراین شما به سادگی می توانید یک حافظه جدید را با GetMem و یا بوسیله صدا زدن constructor هنگام ساختن یک شی درخواست کنید و دلفی به شما یک بلاک جدید را برخواهد گرداند. Heap یکی از سه فضای موجود در برنامه کاربردی را استفاده کرده و دوتای دیگر به صورت فضای یکپارچه (Global) و پشته قرار می گیرند.


حافظه Stack
Stack شامل قسمتی از یک بخش از حافظه موجود یک برنامه است که دینامیکی است اما برای تخصیص و آزادسازی فرامین مخصوص دارد. تخصیص Stack به صورت LIFO می باشد. این بدان معناست که آخرین حافظه شیء شما تخصیص داه خواهد شد و سپس حذف می شود. حافظه پشته در روتین‌های نوعی استفاده می‌شود. وقتی شما یک روتین را صدا میزنید، پارامترهایش و روتین نوع آن در پشته ریخته می شود. همچنین پارامترهایی که در یک روتین تعریف میشوند، در پشته ذخیره میشوند و وقتی روتین خاتمه پیدا می کند تمام آنها به طور خودکار از بین می رود.

vcldeveloper
یک شنبه 24 آذر 1387, 00:31 صبح
حالا ميخوام در مورد مديريت حافظه چند صفحه بنيسم مطلبش هم پيدا كردم بي زحمت يه نگاه بندازيد اين مطلب در مورد دلفي هست ميخوام ببينم تو پاسكال هم دقيقا مديريت حافظه مثل همين هست
این که کپی پست یکی از کاربران همین سایت هست.
تا اینجایی که نوشته، بین دلفی و پاسکال فرق قابل توجه ایی وجود نداره، ولی وقتی بحث مدیریت حافظه کلاس ها، انواع داده دارای شمارشگر مرجع مطرح میشه، فرق هم بوجود میاد.
البته بحث مدیریت حافظه دلفی و پاسکال خارج از محدوده تحقیق شما ست، چون یک مبحث کاملا پیشرفته هست. شما در همین حد هم بنویسید، به نظر بنده کفایت میکنه.

mehdi592
یک شنبه 24 آذر 1387, 07:39 صبح
این که کپی پست یکی از کاربران همین سایت هست.
آقا ما هر چي مينويسيم از اين سايت است ديگه

علي جان شرمنده من هي سئوالا ميپرسم ها

آقا يه بخش مقاله هم ميخوام بزارم در مورد آرايه ها در دلفي وپاسكال كه فكر كنم تو هر دو يكي باشه تعريفش
ممنون ميشم يه نگاه به متنش بندازديد و نظر بديد:



دلفي به ما امکان مي دهد آرايه‌هايي از هر نوع متغييري را ايجاد کنيم. براي تعريف آرايه به صورت زير عمل ميکنيم:



var

array[indexType1, ..., indexTypen] of baseType;





در اين تعريف براي نامگذاري آرايه، از قانون نامگذاري متغييرها استفاده ميکنيم و مقدار اوليه را نيز درون يک جفت کروشه قرار مي دهيم.

نکته: شما مي توانيد به جاي استفاده از کروشه [] از ترکيب پرانتز نقطه استفاده کنيد:




d(.i.):= 3 + i; // Equivalent d[i]:= 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[I];


آرايه‌هاي ثابت:
آرايه هاي ثابت مي توانند توسط ساختار ثابت نوع دلفي تعريف شود. نوع ثابت که هميشه با عبارت 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

);

vcldeveloper
یک شنبه 24 آذر 1387, 18:12 عصر
آقا يه بخش مقاله هم ميخوام بزارم در مورد آرايه ها در دلفي وپاسكال كه فكر كنم تو هر دو يكي باشه تعريفش
بله، ولی در ساختارهای داخلی که کامپایلر برای آنها استفاده میکنه، باید فرق داشته باشند. در هر حال، اون بخشی که متفاوت هست، خارج از حوزه مقاله شما هست، و تا همین حدی که نوشتید، کفایت میکنه.

mehdi592
جمعه 29 آذر 1387, 10:33 صبح
بله.

نه پاسکال، نه دلفی، بر خلاف زبان های Managed شده مثل جاوا یا #C، مکانیزم Garbage Collection که روی همه داده ها کار کنه، ندارند. استثناء آن در دلفی هست که Interfaceها، و برخی نوع های داده مثل string و Dynamic Array را بصورت Reference-counted مدیریت میکنه.


.

علي جان ممنون ميشم يكم در حد حتي يك خط در مورد اين مكانيزم
Reference-counted
توضيح فرمائيد
با تشكر

vcldeveloper
جمعه 29 آذر 1387, 16:23 عصر
ممنون ميشم يكم در حد حتي يك خط در مورد اين مكانيزم
Reference-counted
http://www.barnamenevis.org/forum/showthread.php?t=30800
در مقاله بالا مطالب ذیل عنوان ‏Reference counting‏ (شمارش مرجع)‏ را مطالعه کنید.