Позвольте мне начать с того, что я ненавижу VBScript / ASP и не очень разбираюсь в этом, но я вынужден с ним работать, поэтому терпите меня, пожалуйста. : -)
У меня довольно простая страница, которую можно вызывать напрямую или виртуально, добавляя ее на другие страницы. Давайте назовем эту страницу includes.asp и скажем, что она может быть включена в main.asp .
includes.asp использует переменную, массив, который он должен наследовать от main.asp , если это возможно, но который я определю в includes.asp сам, если он вызывается напрямую.
Так что где-то на main.asp , будет что-то вроде:
Dim myVar(10)
myVar(1) = "Some content here"
Очевидный способ (для меня) затем определить переменную в includes.asp , если она не присутствует для наследования, будет выглядеть примерно так:
If IsEmpty(myVar) Then
Dim myVar(10)
myVar(1) = "Some content here"
End If
Но это не очень мне помогает. Я получаю сообщение об ошибке 800a0411 «Имя переопределено» в строке в включены.asp , где я пытаюсь Dim
переменная «снова». С тех пор я пробовал с If VarType(myVar) < 8000
(поскольку массивы имеют значение VarType> 8192 ; вывод его VarType при включении страницы дает 8194) и If Not IsArray(myVar)
вместо этого с тем же результатом.
Теперь я не знаю, является ли это ошибкой компилятора или ошибкой времени выполнения (и при этом я не знаю, как определить разницу в VBScript), но так как ошибка генерируется внутри блока If
, который должен (? ) никогда не будет выполняться, когда определено myVar
, я предполагаю, что это ошибка компилятора. Эта страница Microsoft называет ее (ошибка 1041) синтаксической ошибкой , что, как мне кажется, означает, что она по крайней мере генерируется во время компиляции, а не во время выполнения.
Так что, если это действительно ошибка компилятора и невозможно Dim
одно и то же имя переменной более одного раза в любом месте в коде VBScript - независимо от того, может ли фактический оператор Dim
потенциально когда-либо существовать выполняться более одного раза - тогда как справиться с такой ситуацией?
Как я могу проверить, была ли переменная Dim
уже изменена, а затем Dim
только если она не была?