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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Программа написана в С++, как написать тоже самое, но в Qt?  (Прочитано 5154 раз)
Tramtararam
Гость
« : Декабрь 08, 2010, 10:25 »

Доброе время суток! Проблема в том, что я недавно начал программировать, а с Qt, буквально пару дней вожусь. Написал прогу на С++, а задание дали тоже самое сделать в Qt. Может кто-то сможет чем-то помочь?

Вот код проги:

Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <bitset>
#include <fstream>
using namespace std;

int main()
{
_wsetlocale( LC_ALL, L"Russian_Russia.ACP" );

char buffer[512];
char f0[160];

ifstream in ("test.txt", ios::in | ios::binary);
if(!in)
{
cout << "Не удаётся открыть файл.\n";
return 1;
}
ofstream out ("test2.txt", ios::out | ios::binary);
if(!out)
{
cout << "Не удатся открыть файл.\n";
return 1;
}
 
    char fname[100];
FILE *ofp[8];
int z;
for (z = 0; z < 8; z++)
{
        sprintf(fname, "file%02d.txt", z);
        if ((ofp[z] = fopen(fname, "wb")) != NULL);
           
    }

do {
in.read(buffer, sizeof(buffer));

for(int i=0; i<3; i++)
{
memcpy(f0, buffer + 8 + 12*(i+1) + 156*i, 156);
out.write(f0, 160);
char a[22];

for(int y=0; y<8; y++)
{
memcpy(a, f0+(int)(19.5*y), 21);

if(y%2)
{
for(int x=0; x<20; x++)
{
a[x] >>=4;
a[x] |= a[x+1] << 4;
}
}
fwrite(a, sizeof(char), 20, ofp[y]);
}
}

} while(!in.eof());

_fcloseall();
in.close();
out.close();


return 0;
}

Мне предлагается засунуть свой С++ код вот в эту функцию:

Код:
void Thread::razbienie_failov(QString fname)
Записан
kirill
Гость
« Ответ #1 : Декабрь 08, 2010, 10:36 »

Мама дорогая.. а что этот код вообще делает?
Страшно подумать что произойдет если во входном файле будет меньше 8 строчек или длина имени файла будет больше 100.
Записан
Tramtararam
Гость
« Ответ #2 : Декабрь 08, 2010, 10:42 »

Це гадость Смеющийся Разбивает файл сначало на три части, потом эти три части ещё на 8 частей. Каждый из восьми файлов имеет строго определённый размер. Я там использовал битовые операции (в частности сдиг). Эксперементировать с размерами не надо, просто реализовать тоже самое необходимо в Qt.
Записан
alexman
Гость
« Ответ #3 : Декабрь 08, 2010, 11:28 »

QFile, QDataStream, QTextStream юзай!
Записан
deaks
Гость
« Ответ #4 : Декабрь 08, 2010, 11:37 »

еще тогда и QTextCodec )))
Записан
Tramtararam
Гость
« Ответ #5 : Декабрь 08, 2010, 11:38 »

Спасибо, а примеров подкинуть можно? А то всё хорошо, а с примерами лучше. Улыбающийся
Записан
Tramtararam
Гость
« Ответ #6 : Декабрь 08, 2010, 11:44 »

еще тогда и QTextCodec )))

А QTextCodec для чего юзать?
Записан
alexman
Гость
« Ответ #7 : Декабрь 08, 2010, 11:46 »

А Qt Assistant почитать не хочешь Подмигивающий
Записан
deaks
Гость
« Ответ #8 : Декабрь 08, 2010, 12:15 »

Код:
    QTextStream out(stdout);
    QTextCodec *concodec = QTextCodec::codecForName("CP-866");
    out.setCodec(concodec);

установка кодировки для потокового вывода)

вам дали все требуемые классы, которые помогут Вам в разработке. открывайте Qt Assistant и изучайте методы, данных классов)
Записан
Tramtararam
Гость
« Ответ #9 : Декабрь 08, 2010, 12:17 »

ОК Подмигивающий Спасибо огромное всем за помощь. Пойду мануалы изучать. Смеющийся
Тему можно закрыть.
Записан
deaks
Гость
« Ответ #10 : Декабрь 08, 2010, 12:31 »

удачи!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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