Как я могу сделать что-то похожее на следующий код C в VB 6?
#ifdef _DEBUG_
// do things
#else
// do other things
#end if
Как я могу сделать что-то похожее на следующий код C в VB 6?
#ifdef _DEBUG_
// do things
#else
// do other things
#end if
Это почти то же самое, что и другие языки, к которым вы привыкли. Синтаксис выглядит следующим образом:
#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.
Коди рассказал вам об условной компиляции. Я хотел бы добавить, что если вы хотите различного поведения при отладке в среде 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.
Чтобы добиться такого же эффекта, как 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, дополнительные вызовы вызываются функцией (что смешно мало). При компиляции это оценивается простым сравнением чисел.
Это мой короткий и стабильный код. Я думаю, что это лучше условных констант, потому что вам не нужно менять его на каждое усложнение.
Public Function InIDE() As Boolean
On Error Resume Next
Debug.Print 0 / 0
InIDE = Err.Number <> 0
End Function