Russian Qt Forum
Ноябрь 26, 2024, 03:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с QDataStream !!!!  (Прочитано 2630 раз)
Racot
Гость
« : Январь 13, 2012, 18:24 »

вот так выглядит упрощённо моя прога:
Цитировать
QDataStream bin_stream;

void fuction_1(void)
{
  QFile bin_file(open_file);
  bin_stream.setDevice(&bin_file);

for(i=0;i<50;i++)
      {
       bin_stream>>data_1;
      
       if(bin_stream.atEnd())
       {
        break;
       }
      }
}

void fuction_2(void)
{
 //Считываем следующую партию байт
        for(i=0;i<50;i++)
        {
         bin_stream>>data_1;
        
         if(bin_stream.atEnd())
         {
          break;
         }
        }
}

Вобщем в function_1 я считываю часть байт из потока, а в function_2 через какое-то время пытаюсь считать еще часть. Но при чтении в function_2  выдаётся ошибка - "приложение остановлено так как получило сигнал от операционной системы".в чём косяк?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Январь 13, 2012, 18:28 »

Перенеси проверку
Код
C++ (Qt)
if(bin_stream.atEnd())
в начало цикла.
Записан

Qt 5.11/4.8.7 (X11/Win)
mutineer
Гость
« Ответ #2 : Январь 13, 2012, 18:30 »

QFile bin_file(open_file); разрушается по выходу из функции function_1
Записан
Racot
Гость
« Ответ #3 : Январь 13, 2012, 18:44 »

Цитировать
QFile bin_file(open_file); разрушается по выходу из функции function_1

Скорее всего дело в этом.......но щас мне  не проверить))))
Хотя я же передал адрес в поток -  bin_stream.setDevice(&bin_file); а bin_stream у меня глобальный......
мне казалось что bin_file ему больше нафиг не нужен....
 
Записан
mutineer
Гость
« Ответ #4 : Январь 13, 2012, 18:47 »

Отдача ссылки потоку не отменяет вызов деструктора у QFile, что, скорее всего, приводит к закрытию файла

Ну и теперь QDataStream имеет указатель куда-то в стек, где лежит непонятно что. А он думает, что это QFile, из которого ему читать надо
« Последнее редактирование: Январь 13, 2012, 18:52 от mutineer » Записан
Racot
Гость
« Ответ #5 : Январь 13, 2012, 18:50 »

Спасибо!!! я думаю вопрос решён.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 22.