• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 11 رای - 2.64 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: رهنمودهای کامپایلر دلفی
حالت موضوعی
#1
مقدمه

اگر برنامه و طرحی برای نوشتن کد دلفی دارید که می‌بایست با نسخه‌های مختلف کامپایلر دلفی کار کند، باید بدانید که تحت کدام نسخه از کامپایلر دلفی کدتان کامپایل خواهد شد. فرض کنید یک کامپوننت شخصی-تجاری برای خودتان می‌نویسید. ممکن هست کاربران کامپوننت شما نسخه‌های متفاوتی از دلفی را داشته باشند و اگر آنها سعی کنند کد کامپوننت را دوباره کامپایل کنند، احتمالاً به دردسر خواهند افتاد. فرضاً اگر شما در یکی از توابع از پارامتری با مقدار پیش‌فرض استفاده کرده باشید و کاربر، کامپوننت شما را در دلفی3 کامپایل کند، با خطایی متوقف می‌شود به این دلیل که دلفی 3 پارامتر با مقدار پیش‌فرض را پشتیبانی نمی‌کند.
رهنمودهای کامپایلر این امکان را به شما خواهند داد تا بتوانید اطلاعاتی از این قبیل را در زمان کامپایل بدست آورید. رهنمود کامپایلر یک توضیح یا comment با ترکیبی خاص هست. محل قرارگیری رهنمودهای کامپایلر می‌تواند در هرجایی که یک توضیح یا comment قرار می‌گیرد باشد. رهنمود کامپایلر با یک علامت $ بعد از بازکردن comment آغاز می‌شود و بدون فاصله بعد از آن نام رهنمود قرار می‌گیرد.
انواع directiveها

کامپایلر دلفی دارای سه نوع رهنمود یا directive هست
Switch directives

تغییر ویژگی خاصی از کامپایلر که می‌تواند On یا Off باشد، مانند : $D+ یا $D-، کامپایلر دلفی به صورت معمول اطلاعاتی را جهت رفع مشکل یا Debug برنامه تولید می‌کند که شامل جدول شماره‌ی خط برای هر متد هست و این اطلاعات باعث مصرف حافظه و حجیم شدن یونیت می‌شود(البته تاثیری روی حجم و سرعت فایل اجرایی ندارد).با غیر فعال کردن این ویژگی توسط رهنمود کامپایلر -D$ می‌توان از تولید این اطلاعات و صرف زمان برای تولید این اطلاعات جلوگیری کرد.

نمونه، این رهنمود به کامپایلر می‌گوید که پیغام‌های Warning Messages را تولید نکند:
کد:
{WARNINGS OFF$}
این رهنمود به کامپایلر می‌گوید که این بسته فقط برای زمان اجرا یا RunTime کامپایل شود، بسته‌ای که با این رهنمود کامپایل می‌شود را نمی‌توان در IDE دلفی نصب کرد:
کد:
{RUNONLY ON$}

Parameter directives

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

نمونه، که حداقل و حداکثر سایز Stack را مشخص می‌کند :
کد:
{M 16384,1048576$}

Conditional directives

رهنمود‌های شرطی یا Conditional directives به ما اجازه می‌دهند تا بخش خاصی از کد را که شرط تعیین می‌کند، کامپایل کنیم.

رهنمود کامپایلر IfDef$ یک بخش کامپایل‌شدنی شرطی را شروع می‌کند که این بلوک می‌تواند به صورت ساده با یک EndIf$ خاتمه یابد یا اینکه در داخل آن از یک Else$ نیز استفاده کرد.

Syntax آن شبیه زیر است :
کد:
{$IfDef DefName}
...
{$Else}
...
{$EndIf}

DefName به اصطلاح نماد شرطی را نمایش می‌دهد. دلفی چندین نماد شرطی استاندارد را تعریف کرده است. در کد بالا اگر DefName تعریف شده باشد، کد بالای Else$ کامپایل خواهد شد.
Delphi Version Symbols

بیشترین استفاده از رهنمود IfDef$ برای تست نسخه‌ی کامپایلر دلفی هست. لیست زیر، نمادهایی از نسخه‌های مختلف دلفی هست که می‌توان برای چک کردن یک
کد:
نسخه‌ی خاص از آنها استفاده کرد :

List
• VER80 - Delphi 1
• VER90 - Delphi 2
• VER100 - Delphi 3
• VER120 - Delphi 4
• VER130 - Delphi 5
• VER140 - Delphi 6
• VER150 - Delphi 7
• VER160 - Delphi 8
• VER170 - Delphi 2005
• VER180 - Delphi 2006
• VER180 - Delphi 2007
• VER185 - Delphi 2007
• WIN32 - Indicates that the operating environment is the Win32 API.
• LINUX - Indicates that the operating environment is Linux
• MSWINDOWS - Indicates that the operating environment is the MS Windows
• CONSOLE - Indicates that an application is being compiled as a console application
با دانستن نمادهای بالا، امکان نوشتن کدهایی که در تمام نسخه‌های دلفی کار کنند، وجود دارد.
کد:
{$IFDEF VER130}
ShowMessage('Delphi 5!');
{$ELSE}
ShowMessage('Other version of delphi!');
{$ENDIF}
سئوالی را در فروم About Delphi مطرح کردم که چرا بورلند عدد شروع نسخه‌ها در دلفی را از 80 (VER80) شروع کرده و چرا این عدد از 10 شروع نشده است؟ شخصی در جواب گفت حدس می‌زنم از اعداد قبلی در Turbo Pascal Borland استفاده شده باشد. در تائید حرف این دوست، گاجیک نظرم را به این نکته جلب کرد که در Borland Turbo Pascal 7.0 از VER70 استفاده شده است.
گروه دور همی پارسی کدرز
https://t.me/joinchat/GxVRww3ykLynHFsdCvb7eg
 
پاسخ
  


موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  سورس کد انتقال فایل به سطل اشغال ( دلفی) Amin_Mansouri 1 6,224 10-08-2022، 06:21 PM
آخرین ارسال: sonusood
  سورس بدست اوردن کلیپ برد ( دلفی ) Amin_Mansouri 1 8,420 10-08-2022، 05:49 PM
آخرین ارسال: sonusood
  دلفی و تلگرام h_mohamadi 2 5,277 04-24-2017، 12:14 AM
آخرین ارسال: shilanaseri
  رسم نمودار در اکسل از طریق دلفی Saeed7007 1 6,810 08-14-2014، 06:11 PM
آخرین ارسال: Amin_Mansouri
  سورس کد بدست اوردن اطلاعات هارد دیسک (دلفی) Amin_Mansouri 1 8,793 07-30-2014، 05:45 PM
آخرین ارسال: dehqan_mehdi
  ۳۵۰ سورس کد دلفی (دلفی رو از ابتدا تا حرفه ای شدن یاد بگیرید) Amin_Mansouri 11 33,896 01-31-2014، 04:27 PM
آخرین ارسال: Amin_Mansouri
  بارگذاری و یا نمایش تصویر فرمت jpg (دلفی) Amin_Mansouri 2 10,947 08-23-2013، 10:06 PM
آخرین ارسال: mo_coders
  بدست اوردن لیست درایورهای موجود بر روی سیستم توسط API (دلفی) Amin_Mansouri 0 5,131 08-17-2013، 09:56 AM
آخرین ارسال: Amin_Mansouri
  دانلود سورس کد استفاده از نقشه گوگل در دلفی Amin_Mansouri 0 7,024 08-17-2013، 09:44 AM
آخرین ارسال: Amin_Mansouri
  سورس کد شناسایی مرورگرهای نصب شده بر روی سیستم عامل (دلفی) Amin_Mansouri 0 5,263 08-17-2013، 09:35 AM
آخرین ارسال: Amin_Mansouri

پرش به انجمن:


Browsing: 2 مهمان