crossplatform.ru

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


  Ответ в непонятная бага
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 23.2.2011, 15:42
 
Цитата(Rocky @ 23.2.2011, 15:24) *
то что 2-й qDebug выведет?
сейчас уже не хочется экспериментировать, код сильно переписал, от данной функции пока избавился.

Цитата(Rocky @ 23.2.2011, 15:24) *
Функция getFirstComponentItem генерирует какие-нить исключения?
нет, мало того она статус "Ок" возвращает.

П.С,
Хотя "Ок" - нуль

в связи со всем этим делом, может кто-то знает как МинГВ осуществляет компиляцию?
Т.е. строковые литералы где-то в одном месте лежат? что-то типа таблицы?
Rocky Дата 23.2.2011, 13:24
  Хм... даже не знаю... Функция getFirstComponentItem генерирует какие-нить исключения? Может ее обернуть в try/catch? Или вообще попробовать из отдельного потока вызывать?

Цитата
разве ОСь на это не должна реагировать? Всё-таки строковые литералы - область "только для чтения"

Х его з. Пару лет назад, когда я подробно в этом всем разбирался смог бы ответить.. Сейчас уже не знаю. Насколько я помню, ОС должна реагировать (имею ввиду SIGTERM и пр) если затираются какие-то системные блоки памяти. Т.е. если выделить память под массив на 10 элементов, а потом обратиться к 11-му (случайно), то далеко не факт что прога выдаст assertion. Последствия теоретически могут быть такими, какие ты пишешь. А т.к. кода этой dll нет, то хрен его знает что там происходит, что слетает... Строки или вообще потоки вывода....

А если например так написать:
int xxx = 123;
qDebug() << xxx;
dbxStatus = getFirstComponentItem(&dbxContext, "R9", &dbxComponentItem );
qDebug() << xxx;

то что 2-й qDebug выведет?
Litkevich Yuriy Дата 23.2.2011, 13:04
 
Цитата(SABROG @ 23.2.2011, 11:17) *
Если функцию из dll не вызывать, то все нормально?
да

Цитата(Rocky @ 23.2.2011, 13:40) *
А можешь привести код getFirstComponentItem?
нет кода, только dll-ка и заголовочник.

Цитата(Rocky @ 23.2.2011, 13:40) *
Может она что-то со стеком делает
разве ОСь на это не должна реагировать? Всё-таки строковые литералы - область "только для чтения"
Rocky Дата 23.2.2011, 11:40
 
Цитата(Litkevich Yuriy @ 23.2.2011, 9:53) *
П.П.С.
креатор по прежнему не помощник, не показывает QString как строку, только все его внутренности.

Странно. Это разве нормально? У меня он обычно все показывает, даже массивы разворачивает.

А если через QMessageBox выводить строки, то они тоже пустые?

А можешь привести код getFirstComponentItem? Может она что-то со стеком делает или еще с чем-то таким...
SABROG Дата 23.2.2011, 9:17
  Если функцию из dll не вызывать, то все нормально?
Litkevich Yuriy Дата 23.2.2011, 8:53
  Имеется такой код (Qt 4.7.1):
    QString s;
    QString s1;

    s = QString("refdes[1] - %1");
    qDebug() << "String[1] =" << s;
    s1 = comp.refDes();
    qDebug() << "S1[1] =" << s1;
    s = s.arg(s1);
    qDebug() << s;

    dbxStatus = getFirstComponentItem(&dbxContext, "R9", &dbxComponentItem );

    s = QString("refdes[2] - %1");
    qDebug() << "String[2] =" << s;
    s1 = comp.refDes();
    qDebug() << "S1[2] =" << s1;
    s = s.arg(s1);
    qDebug() << s;
Вывод в консоль совершенно не понятен:
String[1] = "refdes[1] - %1" 
S1[1] = "C3"
"refdes[1] - C3"
---------------------------------- // тут вызов getFirstComponentItem
""
"C3"
QString::arg: Argument missing: , C3
""
почему после вызова функции getFirstComponentItem в отладку не идут константные строки, и почему после этой функции s1 стала пустой.

П.С.
после вызова getFirstComponentItem во всей программе перестают печататься в поток ошибок строковые константы, хоть через qDebug, хоть через stderr.

П.П.С.
креатор по прежнему не помощник, не показывает QString как строку, только все его внутренности.

П.П.П.С.
getFirstComponentItem - функция из DLL-ки
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 16:30