Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.03.2014, 21:18
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию Как правильно. Научите

Как правильней?
В цикле создать объект или до цикла его создавать и чистить его в цикле
Код:
 while not ADOQuery1.EOF do
  try
    COM_Word := CreateOLEObject('Word.Application');
    COM_Word.Visible := False;
    COM_Word.Documents.Open(ADOQuery1[0].AsString);
    Com_Word.ActiveDocument.Select;
    COM_Word.Selection.Copy;
    RichEdit1.PasteFromClipboard;
    COM_Word.DisplayAlerts := False;
    COM_Word.Quit;
  finally
    COM_Word := UnAssigned;
  end;
Админ: 2-х дневный бан - за отсутствие оформления кода

Научите пожалуйста

Последний раз редактировалось Admin, 17.03.2014 в 21:23.
Ответить с цитированием
  #2  
Старый 17.03.2014, 21:42
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию

Создавать и уничтожать объекты лучше вне цикла. Экономится вычислительная мощь процессора и снижается нагрузка на оперативную память.
Ответить с цитированием
  #3  
Старый 18.03.2014, 09:41
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Создавать и уничтожать объекты лучше вне цикла. Особенно такие как 'Word.Application'.
Ответить с цитированием
  #4  
Старый 20.03.2014, 17:39
aqula aqula вне форума
Новичок
 
Регистрация: 19.10.2012
Сообщения: 95
Репутация: 10
По умолчанию

Задача такая надо открыть документ Word скопировать содержимое из него и запихнуть в поле бд типа text СУБД MS SQL 2005

Вот код который выдает ошибки (Например, что в Буфере нет ничего нет ничего) Может я не так все делаю?

Код:
procedure TMain.SpeedButton3Click(Sender: TObject);
var COM_Word: variant;
begin
  Screen.Cursor:=crSQLWait;
  with Documents.ADOQuery1 do
  try
    COM_Word := CreateOLEObject('Word.Application');
    COM_Word.Visible := False;
    DisableControls;
    First;
    while not EOF do begin
    if ( not FieldByName('cDocumentPath').IsNull) and
      ((pos('.doc', Fieldbyname('cDocumentPath').AsString)<>0) or
       (pos('.rtf', Fieldbyname('cDocumentPath').AsString)<>0)) then
    begin
      Clipboard.Clear;
      COM_Word.Documents.Open(DirPath + FieldByName('cDocumentPath').AsString);
      COM_Word.ActiveDocument.Select;     // Âûäåëÿåì ÁÄ
      COM_Word.Selection.Copy;
       if (Length(Clipboard.AsText)>0) and (Clipboard.HasFormat(CF_TEXT)) then begin
        Edit;
        FieldByName('cDocumentContent').AsString := Clipboard.AsText;
        Post;
      end; // if
    COM_Word.DisplayAlerts := False;
    COM_Word.ActiveDocument.Close;
    COM_Word.Quit;
    end; // if
    Next;
    end; // while
    EnableControls;
  finally
    COM_Word := UnAssigned;
  end;  // try
  Screen.Cursor:=crDefault;

end;

помогите решить задачку ПОЖАЛУЙСТА

Последний раз редактировалось aqula, 20.03.2014 в 21:15.
Ответить с цитированием
  #5  
Старый 26.03.2014, 19:09
basmach basmach вне форума
Прохожий
 
Регистрация: 01.05.2012
Сообщения: 5
Репутация: 10
По умолчанию

Если только текст, то в место
Код:
Clipboard.Clear;
      COM_Word.Documents.Open(DirPath + FieldByName('cDocumentPath').AsString);
      COM_Word.ActiveDocument.Select;     // Âûäåëÿåì ÁÄ
      COM_Word.Selection.Copy;
       if (Length(Clipboard.AsText)>0) and (Clipboard.HasFormat(CF_TEXT)) then begin
        Edit;
        FieldByName('cDocumentContent').AsString := Clipboard.AsText;
        Post;
      end; // if
можно
Код:
FieldByName('cDocumentContent').AsString:=COM_Word.ActiveDocument.Range.Text;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter