e_after; * line_after=new char [sizeLine_after]; sTemp [7]; (dPage + 2, sTemp, 10); sKPage;= kpage=" raquo ;; sKPage +=sTemp; sKPage += " raquo ;; (DWORD i=0; i lt; sizeLine_after; i +=sizeLine) ( amp; line_after [i], sLine, sizeLine);
//Розрахунок розміру нового файлу.
//Розміри: поточного файлу, що додаються ліній до і після секцій,
//додаються рядків в кінці файлу, параметра вказуючого кількість сторінок,
//рядків додаються для перенесення line на новий лістfileSizeNew=fileSize + sizeAllLine + kline * sizeLine + sKPage. GetLength () + sizeLine10_29;
//Виділення блоку оперативної пам'яті для нового файлу * fBuffer=new char [fileSizeNew]; (fBuffer, fileBuffer, fileSize);
//Включаємо в тег stamp, атрибут kpage містить кол-ть листів в документі ( amp; fBuffer [positionStampBefore1], (CStringA) sKPage. GetBuffer (), . GetLength ()); ( amp ; fBuffer [positionStampBefore - 1 + . GetLength ()], amp; fileBuffer [positionStampBefore - 1], fileSize - ); size3=sKPage. GetLength (); int t=0, k=0; (DWORD j=0; j lt; section; j ++)
{
//Якщо це позиція назви розділу (positionSectionStart [j] [1] == 0)
{(k=0; k lt; positionSectionStart [j] [2]; k ++)
{( amp; fBuffer [positionSectionStart [j]
[0] + size3], sLine, sizeLine); +=sizeLine;
} ((j == positionSection10_29 [t] [0]) amp; amp; (section10_29!=-
) amp; amp; ((T lt;=section10_29)))
{(k=0; k lt; positionSection10_29 [t] [1]; k ++)
{( amp; fBuffer [positionSectionStart [j] [0] + ], sLine, sizeLine); +=sizeLine;
} ++;
} ( amp; fBuffer [positionSectionStart [j] [0] + size3],
amp; fileBuffer [positionSectionStart [j] [0]], fileSize - positionSectionStart [j] [0]); ( amp; fBuffer [positionSectionEnd [j] + size3]
, line_after, sizeLine_after); +=sizeLine_after; ( amp; fBuffer [positionSectionEnd [j] + size3],
amp; fileBuffer [positionSectionEnd [j]], fileSize - positionSectionEnd [j]);
}//Якщо це перша чи остання рядок таблиці
{(k=0; k lt; positionSectionStart [j] [1]; k ++)
{( amp; fBuffer [positionSectionStart [j] [0] + size3], , sizeLine); +=sizeLine;
} ( amp; fBuffer [positionSectionStart [j] [0] + size3],
amp; fileBuffer [positionSectionStart [j] [0]], fileSize - positionSectionStart [j] [0]);
}
}
//дописувати рядки в кінці файлу XML (DWORD k=0; k lt; kline; k ++)
{( amp; fBuffer [positionLineEnd + size3], sLine, sizeLine); +=sizeLine;
} ( amp; fBuffer [positionLineEnd + size3], amp; fileBuffer [positionLineEnd], - positionLineEnd);
//Формуємо ім'я проміжного файлаstrPartDir;= temp laquo ;; +=sPartDir; += xml raquo ;; hFileWrite=CreateFile (strPartDir, GENERIC_WRITE, 0,0, CREATE_ALWAYS, 0, 0); (hFileWrite == INVALID_HANDLE_VALUE)
{(fileBuffer, fBuffer, positionSectionStart, _ 29, line_after, counter); true;
} bufferWrite;=WriteFile (hFileWrite, fBuffer, fileSizeNew, amp; bufferWrite, 0); ((hFileWrite == INVALID_HANDLE_VALUE) || (! bReadWriteError))
{(fileBuffer,fBuffer,positionSectionStart,_29,line_after,counter);(hFileWrite);true;
} (hFileWrite); (fileBuffer, fBuffer, positionSectionStart, _ 29, line_after, counter); [] positionSectionEnd; false;
}
//Функція визначає кількість рядків додаються до і після елементів//sectionCXMLСonverterDlg :: AddLine_BeforeAfter (DWORD ** positionSection10_29, DWORD * section10_29, DWORD * line, DWORD kline_before, DWORD kline_after, DWORD ** positionSectionStart, DWORD section, DWORD K, DWORD T)
{
//---------------------------------------------------------------------
//К - кількість рядків на першій сторінці специфікації
//Т - кількість рядків на 2й і наступних сторінках специфікації
//---------------------------------------------------------------------_ 29 [(* section10_29) +1] [1]=- 1; yes=false; ( DWORD k=0; k lt; kline_before + 1; k ++)
{
//Якщо секція може потрапити на другий рядок листа, зменшуємо відступ на//необхідне кількість рядків (((* line) + k == 2) || ((* line) + k == (...