#if, #else, #end if... что означают значки хэша в VBA?
Я пишу код, который проверяет, доступен ли файл для проверки из SharePoint, и если это не так, предупредить пользователя и сообщить им, что файл используется кем-то другим и кто он используется.
Я наткнулся на кусок кода на этом сайте: http://www.xcelfiles.com/IsFileOpen.html#anchor_37
Сам код довольно хорош и, похоже, работает в тестовых сценариях, поэтому я планирую адаптировать его для своих целей, но у меня возникли проблемы с пониманием того, какой синтаксис используется, потому что я никогда не видел подобных ему раньше.
#If Not VBA6 Then
'// Xl97
For i = j - 1 To 1 Step -1
If Mid(strXl, i, 1) = Chr(0) Then Exit For
Next
i = i + 1
#Else
'// Xl2000+
i = InStrRev(strXl, strFlag1, j) + Len(strFlag1)
#End If
Я понимаю, что делает код, но я просто не понимаю, что означает символ "#"?
Другим примером его использования является:
hdlFile = FreeFile
Open strPath For Binary As #hdlFile
strXl = Space(LOF(hdlFile))
Get 1, , strXl
Close #hdlFile
Я уверен, что есть действительно очевидный ответ на это, но это одна из вещей, которая является болью в прикладе Google, потому что она настолько расплывчата.: (
Большое спасибо,
Splat
Ответы
Ответ 1
Символы хеширования представляют собой команду препроцессора, которые являются командами, которые обрабатываются до компиляции, по существу производя динамический/условный код. Эти типы команд часто используются в таких языках, как C/С++, для управления методами кросс-платформенного программирования. Обычно используется проверка конкретной среды или платформы (например, VBA, Windows, MacOSX и т.д.), А затем реализация кода, специфичного для платформы.
http://en.wikipedia.org/wiki/Preprocessor
Ответ 2
Хеш указывает, что это директива.
Используется для буквального включения или исключения кода из компиляции.
http://msdn.microsoft.com/en-us/library/7ah135z7.aspx
кричит, что для vb.net это не так. Я думаю, что та же концепция.