4 этап – подсчет количества найденных слов и вывод результата в окне приложения.
10. Для преобразования в RTF-формат необходимо разработать процедуру вставки заданной последовательности в указанное место в буфере. Пример данной процедуры приведен ниже:
//------------------------------------------------------void __fastcall TForm1::RtfIns(int n, char *txtbuf, char *str)
// вставка RTF строки
// n – место куда нужно вставить строку (смещение от начала буфера)
// txtbuf – указатель на исходный буфер
// str – указатель на строку которую нужно вставить
{
char buff[0xffff]; // буфер cохранения
memset(buff,0,strlen(txtbuf));
strcpy(buff,txtbuf); // сохраним
txtbuf[n]=0; // ограничим начало
strcat(txtbuf,str); //вставка строки RTF
strcat(txtbuf,&buff[n]); // добавим оставшийся текст
}
11. Для преобразования в RTF-формат необходимо разработать процедуру удаления в буфере строки из n символов (удаления последовательности «\r\n»). Пример данной процедуры приведен ниже:
//------------------------------------------------------void __fastcall TForm1::RtfDel(int n, char *txtbuf, int size)
// удаление RTF строки
// n – место с которого нужно удалять (смещение от начала буфера)
// txtbuf – указатель на исходный буфер
// size – длина удаляемой строки
{
char buff[0xffff]; // буфер cохранения
strcpy(buff,txtbuf);
txtbuf[n]=0;
strcat(txtbuf,&buff[n+size-1]);
}
12. Выполнить 1 этап разработки процедуры поиска и визуализации. Данная процедура должна вызываться при нажатии кнопки «Поиск». Последовательность выполняемых действий в процедуре:
чтение текста во внутренний буфер при помощи команды strcpy(buf,RichEdit1->Lines->Text.c_str());
вставка в буфер констант начала и конца RTF-файла с использованием следующей последовательности
RtfIns(0,buf,TXTSTART); // вставка заголовка RTF
RtfIns(sizeof(TXTSTART)-1,buf,TXTNOCOLOR); // установка исходного цвета
strcat(buf,TXTEND); // добавить концовку RTF
strcat(buf,"\0\0\0"); // добавить концовку запись содержимого буфера во временный файл
char FileName[16]="123.rtf";
int handle = open(FileName, O_CREAT|O_TEXT|O_RDWR);
write(handle, buf, strlen(buf));
close(handle);
чтение файла в поле RichEdit при помощи команды
RichEdit1->Lines->LoadFromFile(FileName).
13. Отладить и проверить правильность выполнения задания RTF-формата. В тексте (поле RichEdit) не должно быть видно введенных констант, а сам текст должен быть не форматирован (отсутствие абзацев).
14. Выполнить 2 этап разработки процедуры поиска и визуализации. Для этого в тексте процедуры перед командами установки констант начала и конца RTF-формата требуется установить цикл замены в тексте последовательности «\r\n» на последовательность «\par». Пример данного цикла приведен ниже
// замена ВК и ПС
ptr=strstr(buf,TXTCR);
while(ptr != NULL)
{// замена ВК и ПС на конец абзаца
RtfDel((int)(ptr-buf),buf,sizeof(TXTCR));
RtfIns((int)(ptr-buf),buf,TXTPAR);
ptr=strstr(buf,TXTCR);
}
15. Отладить и проверить правильность выполнения замены. После выполнения процедуры текст (поле RichEdit) должен принять первоначальный вид.
16. Выполнить 3 этап разработки процедуры поиска и визуализации. Для этого в тексте процедуры перед выше приведенном циклом требуется установить цикл поиска ключевых слов. Пример фрагмента данного цикла приведен ниже
strcpy(str,Edit1->Text.c_str()); // ключевое слово
ptr=strstr(buf,str); // поиск слова
// цикл поиска
while(ptr != NULL) {
RtfIns((int)(ptr-buf),…,…..); // начало подсветки
RtfIns((int)(ptr-buf)+…+…-1,…,…); // конец подсветки
ptr=ptr+…+…+…; // смещение указателя
ptr=strstr(ptr,str); // поиск слова
}
17. Отладить и проверить правильность выполнения поиска ключевых слов. После выполнения процедуры найденные слова в тексте (поле RichEdit) должны быть выделены красным цветом.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.