Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2013, 13:57
BlackX BlackX вне форума
Прохожий
 
Регистрация: 02.10.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Поиск символов в RichEdit

Привет всем!
Есть вот такой вот код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
  var
  l,i: integer;
  sym: string;
begin
  l:=length(RichEdit1.Lines.Text);
  for i:=0 to l do
    begin
      sym:=Copy(RichEdit1.Lines.Text,i,1);
      if (sym='G') or (sym='M') or (sym='F') then
        ColorText(RichEdit1,i-1,clGreen);
      if (sym='X') or (sym='Y') then
        ColorText(RichEdit1,i-1,clRed);
      end;
end;
С его помощью во всем тексте RichEdit нахожу нужные мне символы и перекрашиваю их собственной процедурой ColorText. Код работает, но ужасно медленно.
Может, кто-нибудь подскажет как его оптимизировать?
Заранее благодарен!
Ответить с цитированием
  #2  
Старый 02.10.2013, 16:08
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Попробуйте так:
Код:
var i, j, allchar : integer;
    st : string;
begin
  allchar := 0;
  for i := 0 to RichEdit1.Lines.Count-1 do
  begin
    st := RichEdit1.Lines[i];
    if   (pos('G',st) > 0)
      or (pos('M',st) > 0)
      or (pos('F',st) > 0)
      or (pos('X',st) > 0)
      or (pos('Y',st) > 0) then begin
        for j := 1 to length(st) do
        begin
          if (st[j] = 'G') or (st[j] = 'M') or (st[j] = 'F') then
          ColorText(RichEdit1,allchar + j,clGreen);
          if (st[j] = 'X') or (st[j] = 'Y') then
          ColorText(RichEdit1,allchar + j,clRed);
        end;
    end
    allchar := allchar + st;
  end;
end;
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #3  
Старый 02.10.2013, 17:43
BlackX BlackX вне форума
Прохожий
 
Регистрация: 02.10.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Попробовал. Немножко неправильно срабатывает, но смысл я понял. Надо работать со строками, а не со всеми символами сразу.
Спасибо за совет!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter