crossplatform.ru

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


  Ответ в Чтение двоичных файлов
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
AD Дата 9.7.2008, 15:35
 
Цитата(void* @ 9.7.2008, 16:19) *
может проще для таких структур данных использовать XML? тем более в Qt есть и SAX-парсеры, и DOM-парсеры...

А как именно хранить их в XML? Сам вариант решения, возможно, интересен, но мне не подойдет. Двоичный файл, который я хочу прочитать, является картографической библиотекой, которую умеют обрабатывать все наши приборы. Мне необходимо научиться читать его в таком виде.

VigOur, спасибо! Сейчас попробую! :)

P.S. Проблема решена!
void* Дата 9.7.2008, 15:19
  может проще для таких структур данных использовать XML? тем более в Qt есть и SAX-парсеры, и DOM-парсеры...
ViGOur Дата 9.7.2008, 15:18
  Вот так:
    _str strIn;
    QFile f1("nt.dat");
    f1.open(QIODevice::WriteOnly);
    f1.write( (const char *)&strIn, sizeof( strIn));
    f1.close();

    _str strOut;
    strOut.n = .0123;
    strOut.s = "test";
    strOut.y = 1;

    QFile f2("nt.dat");
    f2.open(QIODevice::ReadOnly);
    f2.read( (char *)&strOut, sizeof( strOut));
    f2.close();
AD Дата 9.7.2008, 14:58
 
Цитата(ViGOur @ 9.7.2008, 15:45) *
QFile

Вопрос уточню:
в ReadFile, WriteFile - есть параметры типа void*, которые можно привести к моим (пользовательским) типам.
В Qt описание read следующее:
Цитата
qint64 read ( char * data, qint64 maxSize )
Reads at most maxSize bytes from the device into data, and returns the number of bytes read. If an error occurs, such as when attempting to read from a device opened in WriteOnly mode, this function returns -1.
0 is returned when no more data is available for reading.
See also readData(), readLine(), and write().

QByteArray read ( qint64 maxSize )
This is an overloaded member function, provided for convenience.
Reads at most maxSize bytes from the device, and returns the data read as a QByteArray.
This function has no way of reporting errors; returning an empty QByteArray() can mean either that no data was currently available for reading, or that an error occurred.

Каким образом я смогу эти типы привести к нужному мне типу? А мне нужен тип MAC4Header. Выше уже приводилась его структура.
ViGOur Дата 9.7.2008, 14:45
 
Цитата(AD @ 9.7.2008, 15:40) *
А что использовать? QIODevice или QFile?
QFile
AD Дата 9.7.2008, 14:40
 
Цитата(ViGOur @ 9.7.2008, 15:16) *
А как ты читаешь на MFC? :)

read и write работаю на подобии ReadFile и WriteFile. ;)

QDataStream, говоришь, для этого не подойдет. А что использовать? QIODevice или QFile?
ViGOur Дата 9.7.2008, 14:16
  А как ты читаешь на MFC? :)

read и write работаю на подобии ReadFile и WriteFile. ;)
AD Дата 9.7.2008, 14:13
 
Цитата(ViGOur @ 9.7.2008, 14:42) *
а кто пишет эту структуру?
как я понял не ты, правильно?

если ты читаешь настоящий nt.dat, то QDataStream тебе не подойдет для чтения, прийдется читать с помощью read и write.
что в принципе удобней. :)

Скажем так, файлы nt.mac (nt.dat - был тестовый) пишутся другой программой, которую делал я (программа написана на GUI MFC). Там это реализовано с помощью WinApi - ReadFile, WriteFile!
А как правильно прочесть с помощь read()? Можно примерчик куска кода?
ViGOur Дата 9.7.2008, 13:42
  а кто пишет эту структуру?
как я понял не ты, правильно?

если ты читаешь настоящий nt.dat, то QDataStream тебе не подойдет для чтения, прийдется читать с помощью read и write.
что в принципе удобней. :)
AD Дата 9.7.2008, 13:22
 
Цитата(ViGOur @ 9.7.2008, 14:17) *
Приведи оператор operator<<.

Не понял. Зачем? Мне ее не надо писать, ее надо только прочесть. Или надо тут привести код оператора operator>>?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 8.7.2025, 8:04