![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Ненене, регэкспы!
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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. |