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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Чтение двоичного файла (ANSI-строки)  (Прочитано 5591 раз)
timur85
Гость
« : Июнь 14, 2007, 16:29 »

Помогите пожалуйста решить вот такую проблему...
Считываю двоичный файл...
QFile file(fileName);
   file.open(QIODevice::ReadOnly);
   QDataStream fbuf(&file);
int var;
fbuf >> var;
и т.д.

Пока дело идет с полями,которые содержат целые числа в 4 байтах, все в порядке. Но в некоторых местах содержаться поля в формате ANSI (как указано). Считать такую строку не получилось (пробовал использовать класс QString). :?:
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Июнь 14, 2007, 17:09 »

Если знаешь длину ANSI строки, попробуй применить readRawData. Или читай порциями при помощи этого метода, или вычитывай строки. Можно применить QDataStream::operator>> ( char *& s ), имхо
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Июнь 14, 2007, 19:10 »

ANSI - это с 0 в конце? побайтово надо читать и на 0 проверять.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Июнь 14, 2007, 19:14 »

Цитата: "Racheengel"
ANSI - это с 0 в конце? побайтово надо читать и на 0 проверять.


Помоему QDataStream::operator>> ( char *& s ) это и делает
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
timur85
Гость
« Ответ #4 : Июнь 14, 2007, 23:15 »

Спасибо.Считал с помощью readRawData,т.к знаю точно размер поля, но вместо слов на русском, выводится абра- кадабра  Грустный . Каким образом преобразовать? Не подскажите?

добавлено спустя 13 минут:

 Есть в winapi функция CharToOem или что то похожее, есть вроде и в стандартной библиотеке, но она косячит с русским. Как быть?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Январь 14, 2008, 01:03 »

Цитировать
Спасибо.Считал с помощью readRawData,т.к знаю точно размер поля, но вместо слов на русском, выводится абра- кадабра   . Каким образом преобразовать? Не подскажите?

Попробуй заюзать QTextCodec::setCodecForCStrings.

ЗЫ: Подобные проблемы рассмотрены в разделе "Интернационализация, локализация"
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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