Russian Qt Forum

Qt => Общие вопросы => Тема начата: Tramtararam от Декабрь 08, 2010, 10:25



Название: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: 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)


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: kirill от Декабрь 08, 2010, 10:36
Мама дорогая.. а что этот код вообще делает?
Страшно подумать что произойдет если во входном файле будет меньше 8 строчек или длина имени файла будет больше 100.


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: Tramtararam от Декабрь 08, 2010, 10:42
Це гадость ;D Разбивает файл сначало на три части, потом эти три части ещё на 8 частей. Каждый из восьми файлов имеет строго определённый размер. Я там использовал битовые операции (в частности сдиг). Эксперементировать с размерами не надо, просто реализовать тоже самое необходимо в Qt.


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: alexman от Декабрь 08, 2010, 11:28
QFile, QDataStream, QTextStream юзай!


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: deaks от Декабрь 08, 2010, 11:37
еще тогда и QTextCodec )))


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: Tramtararam от Декабрь 08, 2010, 11:38
Спасибо, а примеров подкинуть можно? А то всё хорошо, а с примерами лучше. :)


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: Tramtararam от Декабрь 08, 2010, 11:44
еще тогда и QTextCodec )))

А QTextCodec для чего юзать?


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: alexman от Декабрь 08, 2010, 11:46
А Qt Assistant почитать не хочешь ;)


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: deaks от Декабрь 08, 2010, 12:15
Код:
    QTextStream out(stdout);
    QTextCodec *concodec = QTextCodec::codecForName("CP-866");
    out.setCodec(concodec);

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

вам дали все требуемые классы, которые помогут Вам в разработке. открывайте Qt Assistant и изучайте методы, данных классов)


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: Tramtararam от Декабрь 08, 2010, 12:17
ОК ;) Спасибо огромное всем за помощь. Пойду мануалы изучать. ;D
Тему можно закрыть.


Название: Re: Программа написана в С++, как написать тоже самое, но в Qt?
Отправлено: deaks от Декабрь 08, 2010, 12:31
удачи!