me escribió algo como esto un tiempo atrás y puede' lo encuentro, y lo necesitaba de nuevo. Así que simplemente lo escribí de nuevo y creo que lo entendí bien:
Public Function IsRunningInIde() As Boolean
Static bFlag As Boolean
bFlag = Not bFlag
If bFlag Then Debug.Assert IsRunningInIde()
IsRunningInIde = Not bFlag
bFlag = False
End Function
No hay errores que se plantean.
Sin reinicio de Err.
Solo una función.
Línea 1: La declaración "Estática" de "bFlag" hace que el valor de bFlag se adhiera a varias llamadas a "IsRunningInIde". Queremos esto porque llamo a esta función dentro de sí misma, y no quería desperdiciar la función con parámetros de entrada que el usuario no necesita.
Línea 3: El "Debug.Assert" no se llama cuando no se ejecuta en el IDE. Entonces, solo cuando en el IDE se llama a "IsrunningInIde" de forma recursiva.
Línea 2: Si no está en la llamada recursiva, bFlag comienza como falso y se establece en verdadero. Si está en la llamada recursiva (solo ocurre cuando se ejecuta en el IDE), comienza como verdadero y vuelve a establecerse en falso.
Línea 3: Solo llame a "IsRunningInIde" si aún no está en esta función recursivamente, marcando si bFlag es verdadero.
Línea 4: si está en una llamada recursiva, siempre devuelve True, lo que en realidad no importa, pero no hace que el Assert falle. Si no está en una llamada recursiva, entonces devuelve "No bFlag", que bFlag ahora es "False" si IsRunningInIde fue llamado recursivamente, y bFlag es "Verdadero" si no se lo llama recursivamente. Así que básicamente, Not bFlag devuelve "True" si se está ejecutando en el IDE.
Línea 5: Borra el bFlag para que siempre sea "False" al comienzo de la próxima llamada a esta función.
Es difícil de explicar, es mejor recordarlo en ambos escenarios.
Si quiere un código más simple de entender, no lo use.
Si hay un problema con este código, me disculpo y házmelo saber para que pueda solucionarlo.
Véase también la pregunta [modo de depuración en Visual Basic 6] (http://stackoverflow.com/questions/ 9052024/debug-mode-in-vb-6) – MarkJ
Ejecutar en el IDE no es lo mismo que tener un depurador conectado, lo que también se puede hacer, por supuesto, pero es algo diferente. – Bob77