با سلام
می خواستم بدون فرق بین تفاوت بین Const و Const# چیه و جچوری تعریف و مقدار دهی میشن
با سلام
می خواستم بدون فرق بین تفاوت بین Const و Const# چیه و جچوری تعریف و مقدار دهی میشن
سلام
Const : ثابت هایی را برای استفاده در برنامه تعریف میکند،
Const#: ثابت هایی را برای شرطی کردن کامپایلر ویژوال بیسیک تعریف میکند،
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
در مورد Const# میشه بیشتر توضیح بدین
در ویژوال بیسیک دو دستور یکی برای تعریف ثابت و دیگری برای شرطی کردن کمپایلر وجود دارد، این دستورات تنها در کمپایلر کاربر دارند:
#If...Then...#Else : شرطی که تعیین میکنیم کدام کدها کمپایل شوند
#Const: یک ثابت variant را منحصرا" برای استفاده در شرط #If تعریف میکند
به عنوان مثال برنامه ای نوشته ایم که قصد انتشار آن را در دو نسخه demo و fullversion داریم، در اینصورت میتوانیم با دو دستور فوق انتخاب کنیم که کدام کدها در نسخه demo و کدام در نسخه fullversion کمپایل شوند که در اینصورت کدهای نسخه کامل برنامهدر نسخه دمو وجود ندارند، کد زیر را ببینید:
#Const fullVer = 0
Private Sub Command1_Click()
#If fullVer Then
MsgBox "Full version", vbInformation
#Else
MsgBox "Trial version", vbExclamation
#End If
End Sub
دو ثابت از پیش تعریف شده نیز وجود دارند که از آنها برای تشخیص win16,32 استفاده میشود، در اینصورت میتوانید مانع از کمپایل دستورات علل الخصوص توابع api win16 در win32 و بالعکس شوید، کد زیر را بررسی کنید:
#If Win16 Then
Const WinVer$ = "Win16"
#ElseIf Win32 Then
Const WinVer$ = "Win32"
#End If
Private Sub Command1_Click()
MsgBox WinVer$
End Sub
همچنین میتوانید ثابت های #Const را در ProjectSettings در جعبه "Conditional Compilation Arguments" نیز تعریف کنید، در اینصورت لازم نیست #Const را صریحا" در ماژول تعریف کنیم، اگر تعداد ثابت های تعریف شده در جعبه "Conditional Compilation Arguments" بیش از یکی است آنها را بوسیله ":" از هم جدا کنید
مثلا":
Arg1=1 : Arg2=2
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
خيلي ممنون از جوابتون. حالا هيج راهي نداره مقداري كه در arg هستش رو چاپ كنيم فقط تو دستور شرطي كاربرد داره؟؟
خیر، این ثابت فقط در دستور شرطی #If کاربرد داره، و نمیتوان از آن در جایی بجز #If استفاده کرد، و اگر در ماژول، دستور Option Explicit وجود داشته باشد، در صورت تلاش برای بدست آوردن مقدار #Const خطای Not defiend داده میشود
کد زیر را هم بررسی کنید:
Option Explicit
#Const MyVal = "CConstant"
Const MyVal = "UConstant"
Private Sub Command1_Click()
MsgBox MyVal
End Sub
همانطور که میدانیم اگه دوتا متغیر هم نام در یک ماژول یا روال اعلان شوند خطای Ambiguous Name ظاهر میشود، حال اینکه در کد بالا اینطور نیست، MsgBox محتویات Const MyVal را نشان میدهد
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.
سلام،
ببخشيد آقاي واژدي من متوجه نشدم چجوري ميشه فول ورژن يا تريال بودن رو مشخص کرد
#Const fullVer = 0
Private Sub Command1_Click()
#If fullVer Then
MsgBox "Full version", vbInformation
#Else
MsgBox "Trial version", vbExclamation
#End If
End Sub
متوجه شدم که کاربرد کد چيه و چي ميگه اما چجوري بگيم که برنامه فول ورژنه يا تريال؟؟؟
با تشکر
سلام علیکمنوشته شده توسط kitcat_m18
در نمونه کد زیر کد های نسخه کامل را جایگزین پیام اول یعنی:
MsgBox "Full version", vbInformation میکنیم، و کدهایی که حاوی محدودیت هایی در استفاده است جایگزین پیام دوم میکنیم
در پایان برای کمپایل برنامه در نسخه دمو مقدار fullVer را برابر صفر و برای انتشار نسخه کامل fullVer را یک مقدار دهی میکنیم
#Const fullVer = 0
Private Sub Command1_Click()
#If fullVer Then
MsgBox "Full version", vbInformation
#Else
MsgBox "Trial version", vbExclamation
#End If
End Sub
موفق باشید
.: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
.: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]
.: لطفا سوالاتی که قابل طرح در انجمن هستند را در خصوصی ارسال نفرمائید.