| Глава 4 | стр 40 |
void CText_matrixDlg::OnBnClickedOk()
{
UpdateData(TRUE);
ifstream from1(strFileName);//открываем файл для считывания
if(!from1)
{
MessageBox("Входной файл не найден");
from1.close(); // always pays to be tidy
OnOK();
}
ofstream to1("TextMatrix.txt" ); // open for writing
if(!to1)
{
MessageBox("Выходной файл не найден");
to1.close(); // always pays to be tidy
}
//////////////////
vector charVec;
//считаем из файла в вектор
char ch;
while (from1.get(ch)) {
charVec.push_back(ch);
}
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
int temp = 0;
int temp_l = 0;
int temp_h = 0;
int size_file = 0; //размер исходного bmp-файла (2-й, 3-й байты)
int chislo_str = 0; //размер картинки в байтах (34-й, 35-й байты)
int size_card = 0; //количество строк в картинке (22-й, 23-й байты)
int dlina_str = 0; //длина строки в выходном файле
char first_ch = ' ';
char second_ch = ' ';
//--------------------------------
//считаем данные из префикса файла
temp_l = (int)charVec[2];
if(temp_l<0)
temp_l = 256+temp_l;
temp_h = (int)charVec[3];
if(temp_h<0)
temp_h = 256+temp_h;
temp_h = 256*temp_h;
size_file = temp_h+temp_l;
temp_l = (int)charVec[22];
if(temp_l<0)
temp_l = 256+temp_l;
temp_h = (int)charVec[23];
if(temp_h<0)
temp_h = 256+temp_h;
temp_h = 256*temp_h;
chislo_str = temp_h+temp_l;
temp_l = (int)charVec[34];
if(temp_l<0)
temp_l = 256+temp_l;
temp_h = (int)charVec[35];
if(temp_h<0)
temp_h = 256+temp_h;
temp_h = 256*temp_h;
size_card = temp_h+temp_l;
dlina_str = size_card/chislo_str;
//-------------------------------------------
UpdateData(TRUE);
strFileName2.Format(strFileName);
strSizeFile.Format("%d",size_file);
strSizeCard.Format("%d",size_card);
strChisloStr.Format("%d",chislo_str);
strDlinaStr.Format("%d",dlina_str);
//обновить значения в диалоговом окне
UpdateData(FALSE);
//////////////////////
//прочтем префикс еще раз
CString str;
CString tmp;
vector charVec2;
for(int i=0;i < 54;i++){
temp = (int)charVec[i];
if(temp<0)
temp = 256+temp;
filter(temp,first_ch,second_ch);
charVec2.push_back(first_ch);
charVec2.push_back(second_ch);
}
//////////////////////////////
/// Выведем префикс в EditBox в 16-ричном виде
int q = 0;
ctlOutBox.ResetContent();
for(int i=0;i < 108;i++){
str = charVec2[i];
tmp = tmp + str;
int z = (i+1)%12;
if(z==0){
ctlOutBox.InsertString(q,tmp);
tmp = "";
q++;
}
}
/////////////////////////////////
//выведем вектор (массив) в файл в 16-ричном виде
int k = 0;
for(int i=54;i < size_file;i++){
temp = (int)charVec[i];
if(temp<0)
temp = 256+temp;
filter(temp,first_ch,second_ch);
to1 << first_ch << second_ch ;
k++;
if(k==dlina_str){
k=0;
to1<< " " << endl ;
}
}
////////////////////
from1.close(); // always pays to be tidy
to1.close(); // always pays to be tidy
}
Назад |
Начало урока |
Вверх |
Вперед
Содержание