![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Привет всем!
Есть вот такой вот код: Код:
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;Может, кто-нибудь подскажет как его оптимизировать? Заранее благодарен! |
|
#2
|
|||
|
|||
|
Попробуйте так:
Код:
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
|
|||
|
|||
|
Попробовал. Немножко неправильно срабатывает, но смысл я понял. Надо работать со строками, а не со всеми символами сразу.
Спасибо за совет! |