PDA

View Full Version : سوال: چطور با دایرکتیو DEFINE عبارتی رو تعریف کنم که در یونیت های دیگه بشناسه؟



Ananas
جمعه 23 تیر 1391, 01:43 صبح
سلام.
من در ایجاد تاپیک تجربم کمه اگه ایرادی داره ببخشید.
می خوام تو یک یونیت دایرکتیو DEFINE بنویسم که وقتی این یونیت رو در جایی uses می کنم این DEFINE رو بشناسه مثل define در c++ که در فایل .h می نویسیم با include کردن اون فایل، می تونیم از اون define استفاده کنیم. ولی وقتی در یک یونیت چیزی تعریف میکنم فقط تو همون یونیت میشناستش چه کار کرد؟

SAASTN
جمعه 23 تیر 1391, 18:40 عصر
اگر از $Define استفاده کنید، قوانین مربوط به Scope در مورد شرطی که تعریف کردی اعمال میشه و تعاریف یه یونیت توی یونیت دیگه دیده نمی شن. اگر می خوای شرطت بصورت Global در کل پروژه تعریف بشه باید بری به منوی Project\Options و دنبال Conditional Defines بگردی، قبلا تو Directories and Conditional بود، تو XE تو Delphi Compiler هست.
راه دیگه هم استفاده از فایل Include هست. به این ترتیب که شرط مد نظرت رو با همون فرمت {$define Something} توی یه فایل می نویسی و ترجیحا با پسوند .inc ذخیره می کنی. حالا توی هر یونیتی که به اون تعاریف احتیاج داشتی می نویسی:
{$Include 'FileName'}
اینکار عملا فرقی با این نداره که Define رو توی همه یونیت ها بنویسی ولی خوب مدیریت تعاریف رو خیلی ساده تر می کنه.