Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

Поиск жирного шрифта в 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 вся ветка

Форум: "Corba";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
2-1184858312
CatAlone
2007-07-19 19:18
2007.08.19
SHGetSystemInfo и иконки


2-1185001109
apic
2007-07-21 10:58
2007.08.19
Отладка DLL


15-1184697721
Mike Kouzmine
2007-07-17 22:42
2007.08.19
fdisk - integer error div 0


15-1185278370
vasIZmax
2007-07-24 15:59
2007.08.19
Какую БД выбрать?


15-1184710325
Германн
2007-07-18 02:12
2007.08.19
Компилятор Дельфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский