![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Приветствую вас форумчане!
Имеется программка (скачал исходник) по работе с заменой слов, типа синонимайзер. Наткнулся на следующую проблему, которую прошу помочь решить: Слова прога берет с отдельного xml файла. Если она слово заменила на нужное, то опять это замененное слово меняет на другое, если оно есть в списке слов. Например - сначала меняет "привет" на "здравствуйте" и затем если слово "здравствуйте" есть в списке синонимов, то меняет его на "привет" Пример порядка слов: "привет" "здравствуйте" "здравствуйте" "привет" "очень" "сильно" и так далее... Если программа находит и меняет слова, но те которые она изменила меняются цветом. Так вот помогите сделать так, чтобы те слова, которые другого цвета (измененные уже) она больше не меняла. Заранее благодарю, вот код: Код:
procedure TForm4.btnOpenClick(Sender: TObject); begin if not OpenDialog.Execute then Exit; Editor.Lines.LoadFromFile(OpenDialog.FileName); end; procedure TForm4.btnReplaceClick(Sender: TObject); Var P: Integer; begin tblDictionary.First; while not tblDictionary.Eof do begin Editor.Lines.BeginUpdate; P := 1; while P <> -1 do begin P := Editor.FindText(tblDictionary.FieldByName('TextToFind').AsString, P, Length(Editor.Text), []); if P = -1 then Continue; Editor.SelStart := P; Editor.SelLength := Length(tblDictionary.FieldByName('TextToFind').AsString); Editor.ClearSelection; Editor.SelAttributes.Style := [fsBold]; Editor.SelAttributes.Color := clMaroon; Editor.SelText := tblDictionary.FieldByName('ReplaceWith').AsString; Inc(P, Editor.SelLength); end; Editor.Lines.EndUpdate; tblDictionary.Next; end; end; end. Последний раз редактировалось Admin, 27.04.2012 в 18:46. |