![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Wlad |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Программа прекрасно работает на копьютере где была создана!
Но на другом не работает - выдает сообжение: Invalid variant operation Библиотеки: mingwm10.dll QtCore4.dll QtGui4.dll были, естественно добавлены на новый комп. Что еще надо непонятно! В программе истользуется QVariant, вот при первом же оращении к нему и выдается эта ошибка. То есть на чужом компе не работает QVariant ![]() Может кто знает, чего не хватает? Спасибо Сообщение отредактировал Litkevich Yuriy - 18.12.2008, 21:00 |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Как я понимаю, у тебя просто QVariant равен 0, потому и ругается так.
Код обращения к QVariant приведи, или проверь сам, почему такое может быть. |
|
|
Wlad |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Проверял. В QVariant передается строка QString.
Она точно такая же, как и на исходном компе. |
|
|
molchanoviv |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: ![]() ![]() ![]() |
А показать код и ошибку можешь?
Сообщение отредактировал molchanoviv - 9.12.2008, 14:38 |
|
|
Wlad |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Для опрелеленности.
Спотыкаемся на оченнь простом месте: QString Name, ID; ......... tableCombo->addItem(.Name,QVariant(ID)); Перед последним оперетором вставлял вывод: ID - нормальная строка! |
|
|
ViGOur |
![]()
Сообщение
#6
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Wlad |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Руками.
Реально строка такая: QMessageBox::information(0,QObject::tr("Transform"),tableList[i].ID); tableCombo->addItem(tableList[i].Name,QVariant(tableList[i].ID)); QMessageBox::information(0,QObject::tr("Transform"),QObject::tr("End addItem")); До второго отладочного сообщения не доходим, хотя на моем компе все работает как надо! |
|
|
ViGOur |
![]()
Сообщение
#8
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
tableCombo->addItem(tableList[i].Name,QVariant(tableList[i].ID)); Просто смотри что я вижу в данной строчке, в качестве второго параметра ты передаешь ссылку на временный объект QVariant(tableList[i].ID), значение которого не факт, что копируется, а по завершению выполнения addItem уничтожается. Вот и получается, что в студии или в чем ты пишешь все работает, а на другом компьютере нет.Покопай в эту сторону... |
|
|
Wlad |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
У себя я запускал программу вне IDE, и все Ok!
Но на всякий случай попробовал так, как советовал: QVariant varStr; for(int i=0; i < tableList.size(); ++i) { varStr = QVariant(tableList[i].ID); QMessageBox::information(0,QObject::tr("Transform"),varStr.toString()); tableCombo->addItem(tableList[i].Name,varStr); QMessageBox::information(0,QObject::tr("Transform"),QObject::tr("End addItem")); } До второго QMessageBox все равно не доходит. Зато теперь видно, что QVariant здесь не причем!!! Первое сообщение то ЕСТЬ! Значит загвоздка в этой строке : tableCombo->addItem(tableList[i].Name,varStr); Попробую посмотреть что происходит с QComboBox *tableCombo; Проблема в том, что все это происходит в конструкторе. Окна я еще не вижу! Попробую сделать так, чтобы увибеть окно, хтябы и не заполненное. Спасибо за помощь! А то я тупо смртрел на QVariant !!! |
|
|
ViGOur |
![]()
Сообщение
#10
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо за помощь! А то я тупо смртрел на QVariant !!! Ну так проблему еще ведь не решили! ![]() Если не получится понять из-за чего и что, выложи побольше кода, попробуем вместе разобраться... Как вариант проверь все ли в порядке у тебя с tableList, просто присвой временно левые значения... |
|
|
Wlad |
![]()
Сообщение
#11
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Закоментил заполнение комбобокса.
Увидел не заполненое окно! Просто не понятно пока: чем отличаются 2 компа? Экперименты пытаюсь проводить максимально чисто - даже менял названия папок, чтобы не влияли прописанные на моем компе пути. Все равно на моем работает, на чужом нет! |
|
|
ViGOur |
![]()
Сообщение
#12
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Wlad |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Пришол домой, запустил, все работает Ok!
Мой домашний и рабочий компы, отличаются от остальных, где я пробовал, тем, что на моих много чего установлено, в часности Ms VC. Может наличие их библиотек в system32 так сказывается? |
|
|
ViGOur |
![]()
Сообщение
#14
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
В таком случае посмотри с помощью Dependence walker, с какими библиотеками связано твое приложение, хотя дело думаю не в этом, а скорее всего где-то баг у тебя закрался.
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#15
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Wlad |
![]()
Сообщение
#16
|
Студент ![]() Группа: Участник Сообщений: 21 Регистрация: 9.12.2008 Пользователь №: 450 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Разобрался!
Invalid мне выдовал не QVariant а виндовый VARIANT. Дело в том, что КомбоБоксы я заполняю информацией, полученной по СОМ интерфейсу из чужой программы. В Qt при выполнении addItem высылается сигнал currentIndexChanged(int), его то я и использоапл для дальнейшего заполнения формы получая информацию по СОМ интерфейсу. Здесь я использовал VARIANT. Когда я писал этот участок кода (это у меня отдельный класс) у меня сразу возник вопрос - как передать целое число в VARIANT? Здесь много вариантов: VT_I2, VT_I4, VT_INT. До этого, я много лет писал анологичные программы на Builder, и все отлично работало! Потому как в Builderе есть свой Variant. Его я в анологичных случаях и использовал. Поэтому я проверил какой тип выставляет Борланский Variant. Написал махонькою программку и посмотрел. Variant мне выдал тип VT_INT. пдставил, проверир, все Ok! Но проверял то я на своем компе! Дело в том, что при установке Builder, он заменяет библиотеку OLEAUT32.DLL, где как раз находится библиотека работы с VARIANT, на свою (у нее другая длина и дата), поэтому, у меня все и работало, а на других компах нет! Интересный факт: там, где OLEAUT32 заненена можно при передачи целого числа в VARIANT указывать как VT_I4, так и VT_INT, все работает! если же стоит виндовая DLLка - проходит только VT_I4. Так что тема закрыта. Большое спасибо за помощь! К слову. Давно хотел уйти с Builder, долго не мог найти замену. Но, наконец встретил Qt. Отличная библиотека! Очень продуманная! Могу привести много примеров, где в Builder приходилось выкручваться с ейными компонентами, а В Qt это уже заложено в Widget-ы. Но это наверное не по теме. |
|
|
ViGOur |
![]()
Сообщение
#17
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Могу привести много примеров, где в Builder приходилось выкручваться с ейными компонентами, а В Qt это уже заложено в Widget-ы. Для этого можно создать тему в форуме Техника программирования. Если есть желание. Но это наверное не по теме. ![]() |
|
|
Litkevich Yuriy |
![]()
Сообщение
#18
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
kuler |
![]()
Сообщение
#19
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Wlad, не спеши радоваться, еще вспомнишь билдер теплыми словами
|
|
|
AD |
![]()
Сообщение
#20
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Wlad, не спеши радоваться, еще вспомнишь билдер теплыми словами [OFFTOP] Есть проект, который модицифирую в Builder 5! Понятно, зависит в большей степени от программиста, а не от компилятора, но кроме мата, по поводу билдера ничего не вырывается. По сравнению с мощным Qt - это дряхлая немощная система. Глючит его по-страшному, компилирует долго. Добавить меню в билдере - это еще та песня с припевом. Настолько все криво, что ужас. [/OFFTOP] По теме, а можно посмотреть кусочки кода? ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 25.6.2025, 2:12 |