Подтвердить что ты не робот

Режим отладки В VB 6?

Как я могу сделать что-то похожее на следующий код C в VB 6?

#ifdef _DEBUG_
    // do things
#else
    // do other things
#end if
4b9b3361

Ответ 1

Это почти то же самое, что и другие языки, к которым вы привыкли. Синтаксис выглядит следующим образом:

#If DEBUG = 1 Then
    ' Do something
#Else
    ' Do something else
#End If

Легко запомнить, если вы просто помните, что синтаксис точно такой же, как и другие операторы управления потоком в VB 6, за исключением того, что условия времени компиляции начинаются с знака фунта (#).

Трюк фактически определяет константу DEBUG (или что-то еще), потому что я уверен, что по умолчанию не определено. Существует два стандартных способа:

  • Используйте ключевое слово #Const, чтобы определить константу в верхней части каждого исходного файла. Определение, которое вы устанавливаете таким образом, действует во всем исходном модуле. Это выглядело бы так:

     #Const DEBUG = 1
    
  • Задайте константу в свойствах проекта. Это определит константу, которая действительна на протяжении всего проекта (и, вероятно, это то, что вы хотите для индикатора режима "Отладка" ).

    Чтобы сделать это, введите в текстовое поле "Условные константы компиляции" что-то вроде следующего: "Сделать" в диалоговом окне "Свойства проекта":

     DEBUG = 1
    

    Вы можете определить несколько констант в этом диалоговом окне, разделив каждый из них на двоеточие (:):

     DEBUG = 1 : VERSION2 = 1
    

Помните, что любая константа, которая не определена, считается 0.

Ответ 2

Коди рассказал вам об условной компиляции. Я хотел бы добавить, что если вы хотите различного поведения при отладке в среде IDE (например, отключите собственную обработку ошибок, чтобы ошибки IDE ловушки) вам не нужна условная компиляция. Вы можете обнаружить IDE во время выполнения, как это.

On Error Resume Next 
Debug.Print 1/0 
If Err=0 then 
  'Compiled Binary 
Else 
  'in the IDE 
End if

Это работает, потому что Debug.Print опущен в скомпилированном EXE.

  • РЕДАКТИРОВАТЬ Не забудьте выключить On Error Resume Next!
  • РЕДАКТИРОВАТЬ. Вы можете обернуть проверку функцией this (спасибо CraigJ)

Ответ 3

Чтобы добиться такого же эффекта, как MarkJ, но с обработкой ошибок, вы можете использовать следующий код.

Public Function GetRunningInIDE() As Boolean

   Dim x As Long
   Debug.Assert Not TestIDE(x)
   GetRunningInIDE = x = 1

End Function

Private Function TestIDE(x As Long) As Boolean

    x = 1

End Function

Когда вы работаете из среды IDE, дополнительные вызовы вызываются функцией (что смешно мало). При компиляции это оценивается простым сравнением чисел.

Ответ 4

Это мой короткий и стабильный код. Я думаю, что это лучше условных констант, потому что вам не нужно менять его на каждое усложнение.

Public Function InIDE() As Boolean
  On Error Resume Next
  Debug.Print 0 / 0
  InIDE = Err.Number <> 0
End Function