Название: Помогите с QDataStream !!!! Отправлено: 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 выдаётся ошибка - "приложение остановлено так как получило сигнал от операционной системы".в чём косяк? Название: Re: Помогите с QDataStream !!!! Отправлено: GreatSnake от Январь 13, 2012, 18:28 Перенеси проверку
Код в начало цикла. Название: Re: Помогите с QDataStream !!!! Отправлено: mutineer от Январь 13, 2012, 18:30 QFile bin_file(open_file); разрушается по выходу из функции function_1
Название: Re: Помогите с QDataStream !!!! Отправлено: Racot от Январь 13, 2012, 18:44 Цитировать QFile bin_file(open_file); разрушается по выходу из функции function_1 Скорее всего дело в этом.......но щас мне не проверить)))) Хотя я же передал адрес в поток - bin_stream.setDevice(&bin_file); а bin_stream у меня глобальный...... мне казалось что bin_file ему больше нафиг не нужен.... Название: Re: Помогите с QDataStream !!!! Отправлено: mutineer от Январь 13, 2012, 18:47 Отдача ссылки потоку не отменяет вызов деструктора у QFile, что, скорее всего, приводит к закрытию файла
Ну и теперь QDataStream имеет указатель куда-то в стек, где лежит непонятно что. А он думает, что это QFile, из которого ему читать надо Название: Re: Помогите с QDataStream !!!! Отправлено: Racot от Январь 13, 2012, 18:50 Спасибо!!! я думаю вопрос решён.
|