Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 254

/ вопрос открыт /

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

Function FindAndInsert(FindText, ReplacementText : string) : boolean;
    const
      wdReplaceAll = 2;
    var
      W : variant;
    begin
!!!   W.Selection.Find.Text := FindText;
      W.Selection.Find.Replacement.Text := ReplacementText;
      FindAndInsert := W.Selection.Find.Execute(Replace := wdReplaceAll);
    end;
так вот... при обращение к этой функции возникает ошибка класса EVariantInvalidOpError с сообщением: "Invalid variant operation" в строке фунции, отмеченной восклицательными знаками (!!!). Текст программы, для отправки данных в Word приведен ниже. помогите мне пожалуйста... {Если вместо функции подставить код, заключённый в фигурные скобки ({}), то программа работает как надо}.

Приложение:
  1. procedure TForm1.Action8Execute(Sender: TObject);
  2. var
  3. W : variant;
  4. dir_ : String;
  5. document : variant;
  6. NameFile : string;
  7. begin
  8.  
  9. try
  10. GetDir(0, dir_);
  11. NameFile := Edit4.Text + '_' + Edit5.Text;
  12. W := CreateOleObject('Word.Application');
  13. W.DisplayAlerts:=False;
  14. document := W.Documents.Open(dir_ + 'Shablon.dot');
  15.  
  16.  
  17.  
  18.  
  19. W.Selection.Find.Replacement.Text := Edit4.Text;
  20. W.Selection.Find.Execute(Replace := wdReplaceAll); }
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27. document.Save;
  28. document.Close;
  29. finally
  30. W.Quit;
  31. W:=UnAssigned;
  32. end;
  33. end;


Михаил Лебедев Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Михаил Лебедев (статус: Посетитель)
Вопрос отправлен: 31 мая 2010, 20:05
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: bugmenot

переменная W не инициализирована.

Ответ отправил: bugmenot (статус: 3-ий класс)
Время отправки: 31 мая 2010, 20:57


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 31 мая 2010, 21:18; участников в обсуждении: 1.
Михаил Лебедев

Михаил Лебедев (статус: Посетитель), 31 мая 2010, 21:14 [#1]:

как же так? она же описана в обоих случаях. или ее необходимо каким-то другим способом инициализировать?
Михаил Лебедев

Михаил Лебедев (статус: Посетитель), 31 мая 2010, 21:18 [#2]:

Все верно, надо было переменную W описывать в FindAndInsert(FindText, ReplacementText : string, W : variant) : boolean; и тогда все заработало. Спасибо большое за совет.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:59
Выполнено за 0.02 сек.