crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
Wlad
  опции профиля:
сообщение 9.12.2008, 14:20
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


Программа прекрасно работает на копьютере где была создана!
Но на другом не работает - выдает сообжение:
Invalid variant operation
Библиотеки:
mingwm10.dll
QtCore4.dll
QtGui4.dll
были, естественно добавлены на новый комп. Что еще надо непонятно!
В программе истользуется QVariant, вот при первом же оращении к нему и выдается эта ошибка.
То есть на чужом компе не работает QVariant :(
Может кто знает, чего не хватает?

Спасибо

Сообщение отредактировал Litkevich Yuriy - 18.12.2008, 21:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.12.2008, 14:26
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Как я понимаю, у тебя просто QVariant равен 0, потому и ругается так.
Код обращения к QVariant приведи, или проверь сам, почему такое может быть.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Wlad
  опции профиля:
сообщение 9.12.2008, 14:33
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


Проверял. В QVariant передается строка QString.
Она точно такая же, как и на исходном компе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 9.12.2008, 14:37
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


А показать код и ошибку можешь?

Сообщение отредактировал molchanoviv - 9.12.2008, 14:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Wlad
  опции профиля:
сообщение 9.12.2008, 14:41
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


Для опрелеленности.
Спотыкаемся на оченнь простом месте:
QString Name, ID;
.........
tableCombo->addItem(.Name,QVariant(ID));

Перед последним оперетором вставлял вывод: ID - нормальная строка!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.12.2008, 14:44
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Wlad @ 9.12.2008, 14:41) *
tableCombo->addItem(.Name,QVariant(ID));
Это компилируется или ты руками написал и сделал ошибку?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Wlad
  опции профиля:
сообщение 9.12.2008, 14:52
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


Руками.
Реально строка такая:

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
  опции профиля:
сообщение 9.12.2008, 15:05
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Wlad @ 9.12.2008, 14:52) *
tableCombo->addItem(tableList[i].Name,QVariant(tableList[i].ID));
Просто смотри что я вижу в данной строчке, в качестве второго параметра ты передаешь ссылку на временный объект QVariant(tableList[i].ID), значение которого не факт, что копируется, а по завершению выполнения addItem уничтожается. Вот и получается, что в студии или в чем ты пишешь все работает, а на другом компьютере нет.

Покопай в эту сторону...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Wlad
  опции профиля:
сообщение 9.12.2008, 15:33
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


У себя я запускал программу вне 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
  опции профиля:
сообщение 9.12.2008, 15:38
Сообщение #10


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Wlad @ 9.12.2008, 15:33) *
Спасибо за помощь! А то я тупо смртрел на QVariant !!!
Ну так проблему еще ведь не решили! :)

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

Как вариант проверь все ли в порядке у тебя с tableList, просто присвой временно левые значения...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Wlad
  опции профиля:
сообщение 9.12.2008, 15:52
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


Закоментил заполнение комбобокса.
Увидел не заполненое окно!

Просто не понятно пока: чем отличаются 2 компа?
Экперименты пытаюсь проводить максимально чисто - даже менял названия папок, чтобы не влияли прописанные на моем
компе пути. Все равно на моем работает, на чужом нет!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.12.2008, 15:54
Сообщение #12


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(ViGOur @ 9.12.2008, 15:38) *
Как вариант проверь все ли в порядке у тебя с tableList, просто присвой временно левые значения...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Wlad
  опции профиля:
сообщение 9.12.2008, 17:26
Сообщение #13


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


Пришол домой, запустил, все работает Ok!
Мой домашний и рабочий компы, отличаются от остальных, где я пробовал, тем, что на моих много чего установлено,
в часности Ms VC. Может наличие их библиотек в system32 так сказывается?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 9.12.2008, 17:29
Сообщение #14


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


В таком случае посмотри с помощью Dependence walker, с какими библиотеками связано твое приложение, хотя дело думаю не в этом, а скорее всего где-то баг у тебя закрался.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.12.2008, 18:00
Сообщение #15


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Wlad @ 9.12.2008, 17:52) *
До второго отладочного сообщения не доходим
лучше используй qDebug, он тебе хоть расскажит в чем дело.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Wlad
  опции профиля:
сообщение 10.12.2008, 19:20
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 9.12.2008
Пользователь №: 450

Спасибо сказали: 0 раз(а)




Репутация:   1  


Разобрался!
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
  опции профиля:
сообщение 10.12.2008, 20:20
Сообщение #17


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Wlad @ 10.12.2008, 19:20) *
Могу привести много примеров, где в Builder приходилось выкручваться с ейными компонентами, а В Qt это уже заложено в Widget-ы.
Но это наверное не по теме.
Для этого можно создать тему в форуме Техника программирования. Если есть желание. ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.12.2008, 20:32
Сообщение #18


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 10.12.2008, 23:20) *
форуме Техника программирования.
да вроде дело не в технике, а о Qt + WinAPI

П.С. может "Библиотеки->Другое"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 11.12.2008, 18:01
Сообщение #19


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Wlad, не спеши радоваться, еще вспомнишь билдер теплыми словами
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 11.12.2008, 19:46
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата
Wlad, не спеши радоваться, еще вспомнишь билдер теплыми словами

[OFFTOP]
Есть проект, который модицифирую в Builder 5! Понятно, зависит в большей степени от программиста, а не от компилятора, но кроме мата, по поводу билдера ничего не вырывается. По сравнению с мощным Qt - это дряхлая немощная система. Глючит его по-страшному, компилирует долго. Добавить меню в билдере - это еще та песня с припевом. Настолько все криво, что ужас.
[/OFFTOP]

По теме, а можно посмотреть кусочки кода? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 25.6.2025, 2:12