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}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.