PDA

View Full Version : اضافه كردن Condition در runtime



A.Nemati
چهارشنبه 06 آبان 1388, 17:27 عصر
با سلام
مي‌شه يك Condition عمومي در runtime تعريف كرد؟
حتما مي‌دونيد كه در داخل يك ماژول مي‌شه با {DEFINE X$} اين كار رو كرد. اما فقط تو همون ماژول كار مي‌كنه. مي‌خوام وقتي مي‌سازمش، در كل پروژه تعريف شده باشه.
راهي هست؟

Mahmood_M
چهارشنبه 06 آبان 1388, 19:45 عصر
حتما مي‌دونيد كه در داخل يك ماژول مي‌شه با {DEFINE X$} اين كار رو كرد. اما فقط تو همون ماژول كار مي‌كنه. مي‌خوام وقتي مي‌سازمش، در كل پروژه تعريف شده باشه.
دوست عزیز ، Compiler Directive ها برای زمان طراحی هستند ، شرطی که با دستور بالا نوشته میشه ، در موقع کامپایل چک میشه ، این شرط همراه برنامه ی اجرایی نیست ...

لطفا مشکل و هدفتون رو ذکر کنید تا دوستان راهنمایی کنند ...

موفق باشید ...

vcldeveloper
پنج شنبه 07 آبان 1388, 00:13 صبح
ما فقط تو همون ماژول كار مي‌كنه. مي‌خوام وقتي مي‌سازمش، در كل پروژه تعريف شده باشه.
توی Project Options می تونید Directive مورد نظرتان را در Conditional Defines اضافه کنید، تا در کل پروژه اعمال بشه.

البته همانطور که گفته شد، اینها Directiveهای کامپایلر هستند، و فقط در زمان کامپایل کاربرد دارند؛ یعنی به کامپایلر گفته میشه در صورت وجود فلان شرط، فلان بخش از کد را کامپایل بکنه، یا نکنه. کدی که به این طریق از کامپایل کنار گذاشته میشه، در فایل اجرایی خروجی وجود نخواهد داشت.

A.Nemati
سه شنبه 12 آبان 1388, 04:06 صبح
با تشكر از دوستان
من يك برنامه دارم كه مي‌خوام اگه با پارامتر خاصي اجرا بشه، يك سري عمليات لاگ گيري توش انجام بشه. براي همين فكر كردم كه بهتره بجاي اينكه مدام اين پارامتر رو در جاي جاي سورس چك كنم، در ابتداي اجراي برنامه، در صورت وجود پارامتر، يك Condition تعريف كنم و عمليات لاگ گيري رو به اون منوط كنم. اينطوري هم كار تروتميزتر مي‌شد و هم اگه قرار بود مثلا فردا روزي پارامتر رو كنار بگذارم و Condition رو هميشگي كنم، دوباره كاري تو تغيير سورس نداشتم.
البته يك راه ديگه، استفاده از يه متغير عموميه كه در همون ابتداي برنامه مقدار دهي بشه ولي اون هم مستلزم اينه كه يه يونيت داشته باشم كه تمام يونيت‌هاي ديگه پروژه اون رو use كنن فقط بخاطر اين يه متغير. به شخصه اين رو هم نمي‌پسندم.
اگه دوستان پيشنهاد بهتري دارن ممنون مي‌شم مطرح كنن.