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

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

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Редактирование файла с помощью QDataStream  (Прочитано 14013 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #30 : Апрель 10, 2015, 11:48 »

А в каких ситуациях играет роль enum Version?
qint64, float, double
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #31 : Апрель 10, 2015, 12:04 »

Правильно казалось, версию Qt он пишет для структур (напр QFont). А QString просто счетчик и по два байта на символ в юникоде.

Для QString, влияет byteOrder и, как оказалось, version тоже.

Пока искал ответ, в исходниках нашёл забавную строчку Улыбающийся
Код
C++ (Qt)
if ((out.byteOrder() == QDataStream::BigEndian) == (QSysInfo::ByteOrder == QSysInfo::BigEndian))
Записан
Yegor
Гость
« Ответ #32 : Апрель 10, 2015, 12:53 »

Решение сделал такое:
Код
C++ (Qt)
// Pack comment (arg) - set it to fixed len.
// Do this with comment before saving it to file.
QString packComment ( const QString &strRawComment )
{
   const int raw_comment_len = strRawComment.length(); // Get the length of raw comment string.
   QString strInitial ( COMMENT_LEN, QChar(0x0000) );  // Create initial string, whith fixed len, populated by null charcters.
   QString strResult = strRawComment;                  // To save result and return it.
 
   // Control the len of raw string.
 
   // Bigger.
   if(raw_comment_len > COMMENT_LEN)   // If bigger -
       strResult.resize(COMMENT_LEN); // rersize,
 
   // Smaller.
   else if(raw_comment_len < COMMENT_LEN) // If smaller - create new, where the rest are null characters (0x0000).
       strResult = strInitial.replace(0, raw_comment_len, strRawComment);
 
   // Else equal.
 
   // Return result.
   return strResult;
}
 
// Unpack comment.
// Transform string (which was loaded from file) - to form whitch is suitable for user (remove all null chars (0x0000)).
QString unpackComment ( const QString &packedComment )
{
   // Create new string to be routed and returned.
   QString result = packedComment;
 
   // Route string - remove all null characters.
   result.remove(QChar(0x0000));
 
   // Return result.
   return result;
}
 

Спасибо большое всем за помощь!
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


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