Главная страница
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.018 c
2-1176723674
IgorMish
2007-04-16 15:41
2007.05.06
Закрывается приложение


15-1176086431
Slider007
2007-04-09 06:40
2007.05.06
С днем рождения ! 9 апреля


1-1173267760
DmitrichJ
2007-03-07 14:42
2007.05.06
Генератор в MSSQL. Бьюсь уже 2-а дня.


2-1176824879
oleg_teacher
2007-04-17 19:47
2007.05.06
Річедіт?


2-1176288154
>>DEATH<<
2007-04-11 14:42
2007.05.06
Посоветуйте!!!!!!!!!!!