PDA

View Full Version : استفاده مشروط از uses در زمان اجرا



danesh1351
چهارشنبه 04 تیر 1393, 09:06 صبح
با سلام
میخواهم در یک فرم با توجه به شرایط زمان اجرا از یک یونیت استفاده کنم .
مثلا اگر شرط برقرار شد از Unit1 استفاده شود .
در ضمن در پیاده سازی هم لازمه همین شرط استفاده بشه .
لطفا برای uses و ÷یاده سازی راهنمائی کنید .
اگه نمونه کد باشه بهتره .
ممنون

یوسف زالی
چهارشنبه 04 تیر 1393, 09:58 صبح
سلام.
یوز شدن یا نشدن رو نمی تونید ران تایم کنترل کنید، این مساله در بیلد به برنامتون اضافه می شه.
می تونید از {IfDef$} استفاده کنید و کنترل کنید که هنگام بیلد از چه یوزی استفاده بشه.

danesh1351
چهارشنبه 04 تیر 1393, 12:27 عصر
بهتر بگم
از یک فرم که کلی امکتنات در اون گذاشتم در دو برنامه مجزا استفاده کردم .
مشکل اینجاست فرم در یک برنامه کار میکنه و در برنامه دیگه بخاطر عبارت uses UMainPers کار نمیکنه

pezhvakco
چهارشنبه 04 تیر 1393, 13:03 عصر
سلام

مشکل اینجاست فرم در یک برنامه کار میکنه و در برنامه دیگه بخاطر عبارت uses UMainPers کار نمیکنه

این عبارتی که نوشتین چی است و کجا نوشته شده ؟

اگه 2 تا برنامه جدا از هم است، پس ارتباطی به هم ندارند و این یونیت مورد نظر (UMainPers) باید در هر یونیتی که می خواهین اون رو بکار بگیرین Use بشه .

یوسف زالی
چهارشنبه 04 تیر 1393, 13:21 عصر
همون طور که توضیح دادم از دایرکتیو استفاده کنید.
1- یک یونیت به هر کدوم از برنامه هاتون اضافه کنید به نام CmpDir.pas، هر برنامه باید برای خودش در فولدر جداگانه این رو داشته باشه.
2- در CmpDir.pas برنامه اول بنویسید:



unit CmpDir;


interface


const
ProjectName = 'Prog1';


implementation


end.



و در برای برنامه دوم هم:



unit CmpDir;


interface


const
ProjectName = 'Prog2';


implementation


end.


3- در یوز مورد نظرتون این طور عمل کنید:


uses
.
.
{$IF CmpDir.ProjectName = 'Prog1'}
UnitA
{$ELSEIF CmpDir.ProjectName = 'Prog2'}
UnitB
{$IFEND}