Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замедление чтения данных из MS-Word, Delphi + MSWord xp 
:(
    Опции темы
TheCetus
Дата 27.4.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 9.3.2006

Репутация: нет
Всего: 2



столкнулся со следующей проблемой:
код читает данные из файла .doc

Код

procedure TImportWord.LoadFromFile(aFileName : string);
  wApp : TWordApplication;
  OleFileName : OleVariant;
  i, Idx : integer;
begin
  wApp := TWordApplication.Create(nil);
  wApp.ConnectKind := ckNewInstance;
  wApp.Connect;
  wApp.AutoQuit := True;
  OleFileName := aFileName;
  wApp.Documents.OpenOld(OleFileName,  EmptyParam, EmptyParam, EmptyParam,
                         EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                         EmptyParam, EmptyParam);
  for i := 1 to wApp.ActiveDocument.Paragraphs.Count do
  begin
    Self.Add(wApp.ActiveDocument.Paragraphs.Item(i));
    if (Idx >= FStep) then
    begin
      Idx := 0;
      DoProgress;
    end;
    Inc(Idx);
  end;
  wApp.Disconnect;
  wApp.Quit;
end;


procedure TImportWord.Add(const aValue : Paragraph);
begin
  FItems[FCount] := aValue.Range.Text;
  Inc(FCount);
end;



данные считываются нормально, 
НО! чем больше данных загружено, тем медленнее идет загрузка
т.е. первые строк 100 грузятся за 1 сек,
следующие уже за 3
с 200-й по 300-й около 8 сек...

почему возникают такие тормоза и как это лечить? 
PM MAIL   Вверх
Albinos_x
Дата 27.4.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



это не самый оптимальный вариант работы с документом... почему бы не скопировать всё содержимое сразу... к примеру:
Код

...
 wApp := TWordApplication.Create(nil);    
  wApp.ConnectKind := ckNewInstance;    
  wApp.Connect;    
  wApp.AutoQuit := True;    
  OleFileName := aFileName;    
  wApp.Documents.OpenOld(OleFileName,  EmptyParam, EmptyParam, EmptyParam,    
                         EmptyParam, EmptyParam, EmptyParam, EmptyParam,    
                         EmptyParam, EmptyParam);
  wApp.ActiveDocument.Select;
  RichEdit1.Text:=wApp.Selection.Text;
...

 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.