Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Андрей от Февраль 28, 2012, 18:50



Название: QDataStream. Запись-чтение.
Отправлено: Андрей от Февраль 28, 2012, 18:50
Не могу добиться, чтобы читалось из файла то, что записывал.
Пишу  QChar - записывается сначала какой-то символ (пробел, похоже), потом нужный символ.
Читаю - читается "ненужный символ".

Запись:
    QString FileName = QFileDialog::getSaveFileName(WParent,tr("Save as..."));
    QFile File(FileName);
    bool opened = File.open(QIODevice::WriteOnly);
    if (!opened) return;
    QDataStream output(&File);
    output.setVersion(QDataStream::Qt_4_2);
.....
.....
....
    QChar str ='<';
    Stream<<str;

Чтение:
    QString FileName = QFileDialog::getOpenFileName(WParent,tr("Open"));
    QFile File(FileName);
    bool opened = File.open(QIODevice::WriteOnly);
    if (!opened) return;
    QDataStream input(&File);
    input.setVersion(QDataStream::Qt_4_2);
.....
.....
....
    QChar symbol;
    stream>>symbol;


Название: Re: QDataStream. Запись-чтение.
Отправлено: Странник от Февраль 28, 2012, 19:57
при чтении действительно открываете с флагом QIODevice::WriteOnly или это опечатка? % )


Название: Re: QDataStream. Запись-чтение.
Отправлено: Андрей от Февраль 28, 2012, 20:42
Спасибо. Исправил.
Тогда ещё вопрос. В файл пишется много лишних символов, это плата за QDataStream? 


Название: Re: QDataStream. Запись-чтение.
Отправлено: kambala от Февраль 28, 2012, 21:18
это плата за запись версии и объектов классов, а не чистых данных


Название: Re: QDataStream. Запись-чтение.
Отправлено: kolob от Март 24, 2012, 01:32
Цитировать
при чтении действительно открываете с флагом QIODevice::WriteOnly или это опечатка? % )

Я что то не очень понял. А в чем проблема в флаге QIODevice::WriteOnly?


Название: Re: QDataStream. Запись-чтение.
Отправлено: mutineer от Март 24, 2012, 01:39
Цитировать
при чтении действительно открываете с флагом QIODevice::WriteOnly или это опечатка? % )

Я что то не очень понял. А в чем проблема в флаге QIODevice::WriteOnly?

WriteOnly, как следует из названия, позволяет только писать