|
Вопрос # 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 приведен ниже. помогите мне пожалуйста... {Если вместо функции подставить код, заключённый в фигурные скобки ({}), то программа работает как надо}.
Приложение: Переключить в обычный режим- procedure TForm1.Action8Execute(Sender: TObject);
- var
- W : variant;
- dir_ : String;
- document : variant;
- NameFile : string;
- begin
-
- try
- GetDir(0, dir_);
- NameFile := Edit4.Text + '_' + Edit5.Text;
- W := CreateOleObject('Word.Application');
- W.DisplayAlerts:=False;
- document := W.Documents.Open(dir_ + 'Shablon.dot');
-
-
-
-
- W.Selection.Find.Replacement.Text := Edit4.Text;
- W.Selection.Find.Execute(Replace := wdReplaceAll); }
-
-
-
-
-
-
- document.Save;
- document.Close;
- finally
- W.Quit;
- W:=UnAssigned;
- end;
- 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; и тогда все заработало. Спасибо большое за совет.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|