napisałem coś takiego jakiś czas temu i może” t znaleźć i potrzebował tego ponownie. Więc po prostu napisał to jeszcze raz i myślę, że miał rację:
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
Brak błędów coraz podniesiony.
Brak resetowania błędu.
Tylko jedna funkcja.
Wiersz 1: "Statyczna" deklaracja "bFlag" powoduje, że wartość bFlag polega na wielokrotnym wywołaniu "IsRunningInIde". Chcemy tego, ponieważ nazywam tę funkcję w sobie i nie chciałem zaśmiecać funkcji parametrami wejściowymi, które nie są potrzebne użytkownikowi.
Wiersz 3: "Debug.Assert" nie zostaje wywołany, gdy nie działa w środowisku IDE. Tak więc tylko w IDE "IsrunningInIde" jest wywoływany rekurencyjnie.
Wiersz 2: Jeśli nie w wywołaniu rekursywnym, bFlag rozpoczyna się od fałszu i otrzymuje wartość true. Jeśli w wywołaniu rekursywnym (dzieje się to tylko podczas działania w IDE), zaczyna się jako prawda i zostaje przywrócona wartość false.
Linia 3: wywoływać tylko "IsRunningInIde", jeśli nie jest jeszcze w tej funkcji rekurencyjnie, sprawdzając, czy bFlag ma wartość true.
Wiersz 4: Jeśli w wywołaniu rekurencyjnym, zawsze zwraca True, co nie ma znaczenia, ale nie powoduje niepowodzenia testu. Jeśli nie w wywołaniu rekursywnym, zwraca "Nie bFlag", który bFlag jest teraz "Fałsz", jeśli IsRunningInIde został nazwany rekursywnie, a bFlag jest "Prawdziwy", jeśli nie jest wywołany rekursywnie. Zasadniczo, nie bFlag zwraca "True", jeśli działa w IDE.
Linia 5: Czyści bFlag, aby zawsze był "fałszywy" na początku następnego połączenia z tą funkcją.
Trudno wytłumaczyć, lepiej jest przejść przez to w głowie, w obu scenariuszach.
Jeśli chcesz łatwiej zrozumieć kod, nie używaj go.
Jeśli wystąpi problem z tym kodem, przepraszam i daj mi znać, abym mógł to naprawić.
Zobacz również kwestia [tryb debugowania w VB6] (http://stackoverflow.com/questions/ 9052024/debug-mode-in-vb-6) – MarkJ
Uruchomienie w IDE to nie to samo co dołączenie debuggera, co oczywiście można zrobić oczywiście, ale to coś innego. – Bob77