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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDataStream<<шестнадцатиричное значение.  (Прочитано 2617 раз)
soulsaver
Гость
« : Январь 17, 2012, 08:47 »

Здравствуйте уважаемые программисты. Мне нужна помощь и я очень надеюсь ее тут получить))). От гугла уже тошнит, на яндекс вопросах тоже не помогли). Дело собственно вот в чем. Делаю программу которая на низком уровне (без драйверов) выдирает нужную инфу из 2х дбфок, создает новую и записывает все туда. Структуру дбф3, а мне нужен именно этот тип, вызубрил на зубок. В принципе ничего сложного нет. но вот в чем проблема. Немогу конвертировать переменную int в 16тиричную систему исчисления а потом побитно записать в файл потоком QDataStream. Вот примеры:
Код:
QFile dbf1;
QMessageBox *msgBox=new QMessageBox(this);
dbf1.setFileName("d:\\dbf\\izdev.DBF");
if (!dbf1.open(QIODevice::WriteOnly)){
    msgBox->setText("File open error!!!!");
    msgBox->show();
}
QDataStream newDbf(&dbf1);
QString conv;
unsigned char dbfVersion= 0x03;
unsigned char dbfDay;
unsigned char dbfMonth;
unsigned char dbfYear;
unsigned short int dbfKolZap;
dbfKolZap=3;
dbfDay= dbfInfo.at(3);
dbfMonth = dbfInfo.at(2);
dbfYear = dbfInfo.at(1);
newDbf<<dbfVersion;
newDbf<<dbfYear;
newDbf<<dbfMonth;
newDbf<<dbfDay;
newDbf<<conv.setNum(dbfKolZap,16);
ну это естественно тока процедура записи в файл, переменные которые я считал с прошлого дбф dbfYear, dbfMonth, dbfDay записываются хорошо, именно так как надо. Для пробы присвоил dbfVersion значение вручную 0x03 и она тоже хорошо записалась. а вот newDbf<<conv.setNum(dbfKolZap,16); пишется во первых криво(записывает не в 16тиричной системе а в ASCII(не 03 а 33 пишет) причем еще куча нулевых байт, ну нулевые понятно, qString большая переменная и она записывается полностью не отбрасывая порожняк, + даже еще что-то свое вставляет. Было еще куча жалких попыток это сделать... Помогите плииз, люди добрые, а то уже скоро работу сдавать а я в тупике и не знаю уже что делать, без вас не справлюсь. Жду с нетерпением.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Январь 17, 2012, 09:10 »

А зачем ты через QString работаешь? Просто засовывай в поток свой dbfKolZap.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
soulsaver
Гость
« Ответ #2 : Январь 17, 2012, 09:18 »

ээээммм.... прикинь я и так и этак его вертел чтоб в 16тиричную перевести.... а тут плять....  и не разу ж мой мозг не кинул в поток просто десятиричное число.... пойду возьму ствол и застрелюсь.... РАБОТАЕТ. РЕШЕНО!!! Стыдно то как....
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Январь 17, 2012, 09:20 »

Забей, бывает. У самого как-то такое было.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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