![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток!
есть программа, которая отображает в ListBox текстовые файлы, текст файла подгружается в RichEdit1, в файле роставлены тэги нужно форматировать текст в зависимости какой тэг поставлен, это делает вот этот кусок кода: Код:
procedure TForm1.Open1Click(Sender: TObject);
var i1,i2: integer;
begin
RichEdit1.Lines.LoadFromFile(ListBox1.Items.Strings[ListBox1.ItemIndex]);
i2:=0;
repeat
i1:=RichEdit1.FindText('[c]',i2,MaxInt,[stMatchCase]);
if i1 < 0 then Break;
inc(i1,3);
i2:=RichEdit1.FindText('[/c]',i1,MaxInt,[stMatchCase]);
if i2 > 0 then
begin
RichEdit1.SelStart:=i1;
RichEdit1.SelLength:=i2-i1;
RichEdit1.SelAttributes.Style:=[fsBold];
inc(i2,3);
end;
until i2 < 0;
end;всё работает, но, в RichEdit отображается текст вместе с этими тэгами, как зделать чтобы они не выводились? но при этом текст остался отформатированным... StringReplace не подходит, так как тэг удаляется, но форматирование "не происходит" прошу помощи ![]() |
|
#2
|
||||
|
||||
|
в продолжении этого варианта: удаляй тэги после применения форматирования.
|
|
#3
|
|||
|
|||
|
Цитата:
так вот я и не пойму как, если можно приведите пример кода ![]() |
|
#4
|
||||
|
||||
|
Ну дык AnsiPos + Delete или
Код:
RichEdit1.SelStart := RichEdit1.FindText('[c]',i2,MaxInt,[stMatchCase]); +
RichEdit1.SelLength = 3;
RichEdit1.SetText(#0); |
| Этот пользователь сказал Спасибо Uniq! за это полезное сообщение: | ||
tesla (10.09.2013)
| ||
|
#5
|
||||
|
||||
|
Ненене, регэкспы!
|
|
#6
|
|||
|
|||
|
Цитата:
ругается на строчку RichEdit1.SelText(#0); [Error] Unit1.pas(109): Missing operator or semicolon Код:
RichEdit1.SelStart := RichEdit1.FindText('[c]',i2,MaxInt,[stMatchCase]);
RichEdit1.SelLength:=3;
RichEdit1.SelText(#0);M.A.D.M.A.N. извени но я тебя не понял ![]() Uniq!, спасибо! зделал AnsiPos в цикле, всё работает Код:
procedure TForm1.Open1Click(Sender: TObject);
var position,position2,i1,i2: integer;
begin
RichEdit1.Lines.LoadFromFile(ListBox1.Items.Strings[ListBox1.ItemIndex]);
i2:=0;
repeat
i1:=RichEdit1.FindText('[c]',i2,MaxInt,[stMatchCase]);
if i1 < 0 then Break;
inc(i1,3);
i2:=RichEdit1.FindText('[/c]',i1,MaxInt,[stMatchCase]);
if i2 > 0 then
begin
RichEdit1.SelStart:=i1;
RichEdit1.SelLength:=i2-i1;
RichEdit1.SelAttributes.Style:=[fsBold];
inc(i2,3);
end;
until i2 < 0;
position:=AnsiPos('[c]', RichEdit1.Text);
while position > 0 do
begin
RichEdit1.SelStart:=position-1;
RichEdit1.SelLength:=3;
RichEdit1.SelText:='';
position:=AnsiPos('[c]', RichEdit1.Text);
end;
end;
position2:=AnsiPos('[/c]', RichEdit1.Text);
while position2 > 0 do
begin
RichEdit1.SelStart:=position2-1;
RichEdit1.SelLength:=4;
RichEdit1.SelText:='';
position2:=AnsiPos('[/c]', RichEdit1.Text);
end;Последний раз редактировалось M.A.D.M.A.N., 10.09.2013 в 08:15. |