Главная страница
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.015 c
9-1145447877
Luka.rus
2006-04-19 15:57
2007.05.06
вывод "поверх" игры


3-1171459284
novill
2007-02-14 16:21
2007.05.06
Напомните, пожулайста, как в IB7 создать хранимую функцию


15-1176015665
IMHO
2007-04-08 11:01
2007.05.06
SureType vs QWERTY


15-1176191272
Fredy314
2007-04-10 11:47
2007.05.06
Подкиньте идею по скриптам


15-1176027749
ProgRAMmer Dimonych
2007-04-08 14:22
2007.05.06
Посоветуйте, пожалуйста...