2011-01-21 3 views
3

Я получаю следующую ошибку несоответствия типов на следующийVB6 ошибка типа несоответствия

IF obj.propery THEN 
    ... 
    END IF 

код я использую на Visual Source Safe и когда другие разработчики запустить тот же проект, код выполняется без ошибок. Свойство - это фактически строка, в которой проблема может быть. Когда я отлаживаю и тестирую свойство, то есть

?obj.propery = True 

ошибки не выбрасываются, что немного странно. Если я поместил курсор над свойством, он произнесет «True». Я немного поработал над этим вопросом и обнаружил, что это может иметь какое-то отношение к OPTION STRICT, однако у меня такая же версия кода, как и у других разработчиков, и OPTION STRICT не выключена, она не была изменена в коде вообще. Существуют ли другие настройки, которые могут повлиять на выполнение кода во время выполнения?

+2

В VB не существует 'Option Strict'. Поиск, который вы сделали, вероятно, вызвал ресурсы, связанные с VB.NET. Это не так, возможно, что * другие * разработчики используют VB.NET, не так ли? –

+0

Как объявляется «obj»? – jakdep

+0

obj - это настраиваемый тип, а свойство - свойство строки. –

ответ

0

я был бы склонен быть более явным в вашем состоянии IF

IF isempty(obj.property) = false AND isnull(obj.property) = false 

НО

было бы целесообразно, чтобы проверить, что OBJ не является нулевым первым, прежде чем начать доступ к его свойства ....

+0

Я пробовал obj.property = "True", и это отлично работает. Однако я не могу просто изменить код, если он работает для всех остальных в компании. –

+0

obj.property = true и obj.property = "True" - это не одно и то же. Один - логическая проверка, другая - проверка значения строки –

+0

Это верно. По какой-то причине, когда все остальные запускают код IF obj.property, THEN перебрасывает obj.property (string) в значение boolean. Для меня это не так, конечно obj.property = «True» вернет логическое значение в операторе =, так как это строка. Для всех остальных это похоже на то, что он выполняет автоматическое кастинг/преобразование obj.property в логическое значение –

2

Это не было связано с VB6, это было связано с режимом XP и использованием моей учетной записи пользователя из другого домена, в отличие от XPMUser. Когда я использую XPMUser, приложение работает очень странно, и я не уверен, почему это так. Если у кого есть причина, которую я хотел бы услышать.

+1

Мне было бы очень интересно узнать, что вызывает это. Я рад, что вы разобрались с виновником. Сегодня я смогу спать.Конечно, тот факт, что работа в режиме XP приводит к тому, что VB 6 отмечает это как ошибку, заставляет меня задаться вопросом, следует ли * всем *, которые все еще записывают код VB 6, разрабатываться в режиме XP ... –

+0

У меня такая же проблема, для назначения строки для строки в виртуальной машине XP. – jlafay

3

Мне кажется, что может возникнуть совершенно другая причина ошибки вашего несоответствия типа, особенно при доступе к объекту. Я столкнулся с этой ошибкой, когда по какой-то причине я указал на другую DLL, которая была зарегистрирована. Вы обнаружите, что с VB он регистрирует DLL «на лету» при ее создании, поэтому вы можете получить доступ к коду где-то, чего вы не ожидали. Это может быть не проблема в вашем случае, но это стоит изучить.

Смежные вопросы