Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Как перенести текст из RichEdit с сохранением форматирования   Найти похожие ветки 

 
Kirflaer ©   (2007-03-02 11:42) [0]

Здравствуйте, у меня проблема, необходимо перенести данные из 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],"&lt/b&gt&ltb&gt","");     //  Удаляем лишние теги
 Ar[c]:=StringReplaceAll(Ar[c],"&lt/i&gt&lti&gt","");
 Ar[c]:=StringReplaceAll(Ar[c],"&lt/u&gt&ltu&gt","");

  count:=len+count+2;

  c:=c+1;
 end;
until c = RichEdit1.Lines.Count;

вот она работает, но при относительно больших обьемах текста кидает.
Я думаю обрабатывать текст по частям  в потоках, но хотелась бы спросить более продуктивный способ


 
DimaBr   (2007-03-02 12:48) [1]

Даже читать не стал

Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.


 
Жуков Олег   (2007-03-02 16:51) [2]

Посмотри здесь http://atnode.ru/?part=104.
На днях там выложу обновление RtfToHtml (дополнения связаны только с таблицами).


 
reaL_Frick   (2007-03-07 11:59) [3]

Огромное спасибо, алгоритм очень помог.



Страницы: 1 вся ветка

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
2-1176552227
..::KraN::..
2007-04-14 16:03
2007.05.06
System Tray и Список последних файлов


4-1165562881
Peter Kapustin
2006-12-08 10:28
2007.05.06
Сканер для считвания чипов.


1-1173789487
oleg__
2007-03-13 15:38
2007.05.06
TChart


2-1176392286
GL00m
2007-04-12 19:38
2007.05.06
Пресловутые PChar и DLL...


3-1171843720
Lirik
2007-02-19 03:08
2007.05.06
SQL Server Compact Edition 2005