![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перенести текст из RichEdit с сохранением форматирования [D7, WinXP]
Kirflaer © (2007-03-02 11:42:00)Здравствуйте, у меня проблема, необходимо перенести данные из RichEdit в html, с сохранением форматирования, я вот написал
процедурку:
count:=0;
c:=0;
SetLength(Ar,RichEdit1.Lines.Count);
repeat
begin
Application.ProcessMessages;
RichEdit1.SelStart:=count;
len:=Length(RichEdit1.Lines.Strings[c]);
s:='';
p:='';
for i:=0 to len do
begin
p:='';
Application.ProcessMessages;
RichEdit1.SelStart:=i+count;
RichEdit1.SelLength:=1;
if ((fsBold) in (RichEdit1.SelAttributes.Style)) or((fsItalic)in (RichEdit1.SelAttributes.Style))
or((fsUnderline) in (RichEdit1.SelAttributes.Style)) then
begin
if ((fsBold) in (RichEdit1.SelAttributes.Style)) and
((fsItalic)in (RichEdit1.SelAttributes.Style)) and
((fsUnderline) in (RichEdit1.SelAttributes.Style))
then
s:=s+теги форматирования+RichEdit1.SelText
else
if ((fsBold) in (RichEdit1.SelAttributes.Style)) and
((fsItalic)in (RichEdit1.SelAttributes.Style))
then
s:=s+теги форматирования+RichEdit1.SelText
else
if ((fsBold) in (RichEdit1.SelAttributes.Style)) and
((fsUnderline) in (RichEdit1.SelAttributes.Style))
then
s:=s+теги форматирования+RichEdit1.SelText
else
if ((fsItalic) in (RichEdit1.SelAttributes.Style)) and
((fsUnderline)in (RichEdit1.SelAttributes.Style))
then
s:=s+теги форматирования+RichEdit1.SelText
else
if ((fsBold) in (RichEdit1.SelAttributes.Style)) then
s:=s+' '+RichEdit1.SelText+''
else
if ((fsItalic) in (RichEdit1.SelAttributes.Style)) then
s:=s+теги форматирования+RichEdit1.SelText
else
if ((fsUnderline) in (RichEdit1.SelAttributes.Style)) then
s:=s+теги форматирования+RichEdit1.SelText
end
else
s:=s+RichEdit1.SelText;
Ar[c]:=Ar[c]+s;
Ar[c]:=StringReplaceAll(Ar[c],'</b><b>',''); // Удаляем лишние теги
Ar[c]:=StringReplaceAll(Ar[c],'</i><i>','');
Ar[c]:=StringReplaceAll(Ar[c],'</u><u>','');
count:=len+count+2;
c:=c+1;
end;
until c = RichEdit1.Lines.Count;
вот она работает, но при относительно больших обьемах текста кидает.
Я думаю обрабатывать текст по частям в потоках, но хотелась бы спросить более продуктивный способ
reaL_Frick (2007-03-07 11:59:00) [1]Огромное спасибо, алгоритм очень помог.
Жуков Олег (2007-03-02 16:51:00) [2]Посмотри здесь http://atnode.ru/?part=104.
На днях там выложу обновление RtfToHtml (дополнения связаны только с таблицами).
DimaBr (2007-03-02 12:48:00) [3]Даже читать не стал
Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.