Название: Чтение с файла Отправлено: demaker от Декабрь 11, 2012, 18:10 Здравствуйте.
У меня есть файл данных. Файл сохранен как бинарный. Мне нужно с него считать данные и сохранить в надлежащем виде. хочу считать по байтно Код: char DynamicData; Но выдает ошибку. Подскажите почему? Название: Re: Чтение с файла Отправлено: Mikhail от Декабрь 11, 2012, 18:21 Хотелось бы увидеть какую оибку выдает.
Фйл то открываешь, или как? Название: Re: Чтение с файла Отправлено: Alex Custov от Декабрь 11, 2012, 18:24 Но выдает ошибку. Подскажите почему? Видимо потому, что написан неправильный код Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 11:10 Ошибка
comtrade.cpp:112: error: no match for 'operator>>' in 'in >> ((CCOMTRADE*)this)->CCOMTRADE::DynamicData' Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 11:16 Но выдает ошибку. Ошибки нет. Просто ничего не выводит в qDebug(). ??? Определись уже, есть ошибка или нет. А что он должен вывести в дебаг? У тебя в коде никакого вывода нет, вот и не выводит ничего Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 11:17 Ошибка comtrade.cpp:112: error: no match for 'operator>>' in 'in >> ((CCOMTRADE*)this)->CCOMTRADE::DynamicData' Что у тебя на этой 112й строке? Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 11:21 Код: in >> DynamicData; Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 11:23 По тексту ошибки создается впечатление, что DynamicData это не просто char. Приведи больше кода
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 11:28 Код: class CCOMTRADE Код: QFile*pFile = new QFile;; //File * pFile; Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 11:35 Хочу в массив типа char запихнуть файл :)
А он символ считать не может ??? Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 11:37 В QDataStream нету метода для чтения в char, но есть для чтения в char*
Цитировать QDataStream & QDataStream::operator>> ( char *& s ) Reads the '\0'-terminated string s from the stream and returns a reference to the stream. Space for the string is allocated using new -- the caller must destroy it with delete[]. Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 11:41 поменял в .h
Код: char *DynamicData; Код: in >> *DynamicData; таже ошибка Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 11:45 поменял в .h Код: char *DynamicData; Код: in >> *DynamicData; таже ошибка Звездочку убери при чтении, со звездочкой это ничем от предыдущего не отличается Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 11:52 :)
да, точно поменял Код: QDataStream in(pFile); хочу в дебаге посмотреть что считалось но ...exe завершился с кодом -1073741819 Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 12:00 Звездочку убери!!
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 12:03 Да убрал ее.
Тогда он в дебаге не выдает ничего Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 12:06 А нет все норм ::)
прошу прощения. А если считать несколько символов то в цикл забить и запихивать в массив? Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 12:15 Что? Ты читал вообще кусок доки, который я кинул? QDataStream считывает не один символ, а строку, завершающуюся нулем
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 12:19 :(
да тогда надо по другому делать будет Все понял Код: QDataStream & QDataStream::operator>> ( char *& s ) Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 13:08 Подсккажите ,что здесь не правильно
qDebug() не выводит 44, а выводит 0 Код: QBuffer buffer; Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 13:12 Неправильно работаешь с потоком. После записи указатель стоит после записанного 44 и читать оттуда нечего
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 13:21 А как надо?
Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 13:22 Как надо что? я смысла практического в приведенном коде ни вижу
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 13:28 Пытаюсь разобраться как правильно работать с потоками ввода и вывода.
Потому что по работе с файлом ничего не получается. Вот и пробую на элементарном уровне понять как и что работает. Название: Re: Чтение с файла Отправлено: kambala от Декабрь 12, 2012, 13:42 каждая операция чтения/записи двигает «курсор» вперёд. пропустить байты можно с помощью QDataStream::skipRawData(int), установить произвольную позицию «курсора» — dataStream.device()->seek(int)
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 14:50 Ум понятно.
А скажите а вот бинарный файл запихнуть в массив типа char вот можно: Код:
а то не пойму как работает readBytes. Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 14:52 Можно, разрешаю. А почему побайтно и зачем тут вообще QDataStream? Ну и пользуешься функцией readBytes ты неправильно
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 14:58 А почему побайтно и зачем тут вообще QDataStream? Побайтно потому что бинарный файл будет. а как без него QDataStream? Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 15:02 А вот прямо через QFile::read. И не побайтно, а много байт сразу. Этому бинарность никак не мешает
Название: Re: Чтение с файла Отправлено: mutineer от Декабрь 12, 2012, 15:13 У базового класса она есть
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 15:14 Да у QIODevice есть точно
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 15:15 Я ЛОХ :-\
Название: Re: Чтение с файла Отправлено: demaker от Декабрь 12, 2012, 15:23 Спасибо :)
|