آیا در زمان کدنویسی هستیم؟ Do InIDE
در برخی مواقع لازم هست برنامه ما نسبت به این دو حالت واکنش مخصوص به خودش رو داشته باشه:
- برنامه در زمان طراحی و نوشتن کد اجرا میشه InIDE
- یا برنامه بعد از کامپایل شدن از فایل اجرایی (یا فرق نمیکنه فایل کامپایل شده) اجرا میشه
مثلا شما در زمان نوشتن برنامه برای تست سرعت کدهایی رو مینوسید که اون کدها فقط در زمان طراحی به درد ما میخورند و بعد از کامپایل به گزارشی که اون کدها ارائه میدند احتیاجی نیست. در واقع شما لازم دارید که یک نوع کد خاص تنها در زمان کدنویسی اجرا بشه...
اما برنامه ما باید از کجا بفهمه که در زمان کدنویسی InIDE اجرا شده یا نه؟
برای این کار در اینجا سه روش رو معرفی میکنم که همگی با استفاده از این خاصیت کار میکنند که "Debug درون برنامه کامپایل شده حذف میشه!". امیدوارم به درد دوستان بخوره.
روش اول
کد:
Private Function IsEXE() As Boolean
On Error GoTo IDE
Debug.Print 1 / 0
IsEXE = True
IDE: Exit Function
End Function
روش دوم
کد:
Private Function IsEXE() As Boolean
Static bEXE As Boolean
If Not bEXE Then
bEXE = True
Debug.Assert IsEXE() Or True
IsEXE = bEXE
End If
bEXE = False
End Function
روش سوم
کد:
'General
Private m_bInIDE As Boolean
Public Function IsInIDE() As Boolean
Debug.Assert (SetIDEFlag())
IsInIDE = m_bInIDE
End Function
Private Function SetIDEFlag() As Boolean
m_bInIDE = True
SetIDEFlag = m_bInIDE
End Function
یادتون باشه برای تست کدها باید یک بار برنامه رو در وضعیت طراحی اجرا کنید و یک بار هم بعد از کامپایل!
همین کدها رو داخل یک پروژه تست گذاشتم میتونید دانلود و استفاده کنید...
راستی برنامه های کمکی مثل همون VbAdvande هم هستند که روش های خاص خودشون رو برای این کار ارائه میدند...
اگر شما هم روشی هست که می دونید اینجا مطرح کنید ما هم استفاده کنیم