{ int i, j; if( !m_cFormat ) { // если необходимо оставить формат DOS for( i = 0; i < *Count; i++ ) Array[i] = (Array[i] < 0x80 )? Array[i]: (Array[i] > 0x7f && Array[i] < 0xb0)? Array[i] | 0x40: (Array[i] > 0xaf && Array[i] < 0xe0)? Array[i] | 0x30: (Array[i] > 0xdf && Array[i] < 0xf0)? Array[i] | 0x10: Array[i] & 0xbf; return Array; } // убираем формат DOS for( j = i = 0; i < *Count; i++ ) { // если в конце буфера "\n\r" и не конец файла if(i == *Count-2 && Array[i] == 0x0d && !End) { *Save = 2; break; } // если в конце буфера "-\n\r" и не конец файла if(i==*Count-3 && Array[i]==0x2d && Array[i+1]==0x0d && !End) { *Save = 3; break; } // если символ - не первый пробел if(Array[i] == 0x20 && Space) continue; // если конец абзаца if(Array[i] == 0x0d && Array[i+1] == 0x0a && Array[i+2] == 0x20) { Array[j++] = 0x0d; Array[j++] = 0x0a; Space = TRUE; i++; continue; } // если в конце буфера "\n\r" if(Array[i] == 0x0d && Array[i+1] == 0x0a && i+2 == *Count) { i++; continue; } // если последовательность "-\n\r" if(!Space && Array[i] == 0x2d && Array[i+1] == 0x0d && Array[i+2] == 0x0a && Array[i+3] != 0x20) { i += 2; continue; } // если конец строки в середине абзаца if(Array[i] == 0x0d && Array[i+1] == 0x0a) { Array[j++] = 0x20; Space = TRUE; i++; continue; } // если символ не один из перечисленных Space = (Array[i] == 0x20)? TRUE: FALSE; Array[j++] = (Array[i] < 0x80 )? Array[i]: (Array[i] > 0x7f && Array[i] < 0xb0)? Array[i] | 0x40: (Array[i] > 0xaf && Array[i] < 0xe0)? Array[i] | 0x30: (Array[i] > 0xdf && Array[i] < 0xf0)? Array[i] | 0x10: Array[i] & 0xbf; } *Count = j; // количество действительно перекодированных символов return Array; }