ايران ويج

نسخه‌ی کامل: آیا در زمان کد‌نویسی هستیم؟ Do InIDE
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
آیا در زمان کد‌نویسی هستیم؟ 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 هم هستند که روش های خاص خودشون رو برای این کار ارائه میدند...
اگر شما هم روشی هست که می دونید اینجا مطرح کنید ما هم استفاده کنیم Shy