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

Вниз

Поиск жирного шрифта в word   Найти похожие ветки 

 
Bratskiy ©   (2005-12-27 06:21) [0]

Привет всем! Помогите пожалуйста. У меня такая проблема: мне нужно написать код, который ищет в документе Word, номера строк, которые выделены жирным шрифтом. Я попробовал решить эту задачу так:

e:=WD.Range.End_;
r:=WD.Range(a,b);
while (r.Font.Underline=0)and(b<e) do
   begin      
     r:=WD.Range(a,b);
     Application.ProcessMessages;
   end;
после выхода из цикла значение переменной a будет решением данной
задачи. Но возникает проблемма, полученная программа работает очень медленно. Подскажите пожалуйста как добится решения другим более быстрым способом. Заранее благодарен


 
umbra ©   (2005-12-27 14:06) [1]

а как a и b изменяются? приведенный цикл может быть бесконечным


 
umbra ©   (2005-12-27 14:07) [2]

и почему проверяется, подчеркнутость шрифта?


 
Bratskiy ©   (2005-12-28 04:29) [3]

Я немного не тот код написал, торопился, а потом когда отправил, увидел что не то, а уже поздно, сообщение отправлено. На самом деле у меня так:
var a,b:OleVariant;
.......................
a:=1; b:=2;
e:=WD.Range.End_;
r:=WD.Range(a,b);
while (r.Font.Bold=0)and(b<e) do
  begin  
    inc(b);inc(b);
    r:=WD.Range(a,b);
    Application.ProcessMessages;
  end;
Вообще задача у меня разбить документ, который представляет из себя новостную ленту на отдельные новости, и соотнести каждую новость к определённому разделу и занести в базу. Разделы в ленте выделяются жирным и подчёркнутым шрифтом, а новости внутри разделов просто жирным шрифтом поэтому условие в цикле While у меня сложнее, но приводить я его не стал. Таким способом одна лента обрабатывается около 10 минут а их целая куча.


 
k2 ©   (2005-12-28 09:00) [4]

новостная лента у меня почемуто с html ассоциируется, а там лучше через таги


 
Bratskiy ©   (2005-12-28 09:21) [5]

Эти самые ленты приходят по электронной почте в виде прикреплённых документов


 
k2 ©   (2005-12-28 11:27) [6]


procedure FindBoldAndUnderline;
var
 wapp: WordApplication;
 doc: WordDocument;
 r: OleVariant;
 found: WordBool;
begin
 wapp := GetActiveOleObject("Word.Application")as WordApplication;
 doc := wapp.ActiveDocument;
 r := doc.Content;
 repeat
   found := false;
   r.find.ClearFormatting;
   r.find.Font.Bold := true;
   r.Find.Font.Underline := wdUnderlineSingle;
   found := r.Find.Execute(EmptyParam, EmptyParam, EmptyParam, EmptyParam,
     EmptyParam, EmptyParam, true, EmptyParam, true, mptyParam,EmptyParam,
     EmptyParam, EmptyParam, EmptyParam, EmptyParam);
   if found then begin
     r.StartOf(wdCharacter, wdMove);
     r.InsertAfter("Новость:  ");
     r.Move(wdParagraph, 1);
   end;
 until
   not found;
end;


попробуй такой вариант - будет быстрее?


 
Bratskiy ©   (2005-12-28 11:48) [7]

Спасибо огромное, работае действительно гораздо быстрее. С наступающим!!!


 
Bratskiy ©   (2005-12-28 11:49) [8]

Спасибо огромное, работает действительно гораздо быстрее. С наступающим!!!


 
k2 ©   (2005-12-28 11:54) [9]

на здоровье :) а просто интересно - насколько быстрее?


 
k2 ©   (2005-12-28 11:57) [10]

и кстати нижеследующее вынести перед циклом (поспешишь - людей насмешишь :))
  r.find.ClearFormatting;
  r.find.Font.Bold := true;
  r.Find.Font.Underline := wdUnderlineSingle;



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
2-1185494148
Раф
2007-07-27 03:55
2007.08.19
Форма на панели задач...


2-1185136869
ReW
2007-07-23 00:41
2007.08.19
Цветовой Ключ


15-1179751582
Dimon777
2007-05-21 16:46
2007.08.19
BDE+Paradox+Vista: Кто нибудь пробовал?


2-1184731695
tipman
2007-07-18 08:08
2007.08.19
Отладка DLL в DELPHI2005? есть проблема


1-1181402540
Yus
2007-06-09 19:22
2007.08.19
RichEdit Как оперделить форматирование строки