![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Проблема с открытием документа word 2003
Здравствуйте. Приходится разбираться с чужим кодом. Приложение windows приложение (среда разработки Delphi2010) работает с документами Word 2010, но выкидывает exception в случае, когда установлен word2003 (точнее windows 7 c word2010 работает, а windows XP и word2003 не работает) Ошибка выбрасывается в методе Оpen , функция полностью приведена ниже Код:
// Загрузка шаблона MS Word function OpenSample(var msw: OleVariant; path: string): boolean; begin msw.Documents.Open(path); // msw-System.OleVariant здесь получаем исключение end; Последний раз редактировалось M.A.D.M.A.N., 23.11.2013 в 12:48. |
|
#2
|
||||
|
||||
|
msw пустое?
|
|
#3
|
|||
|
|||
|
точно не скажу, но
ранее вызвана функция Код:
// Открываем Word
if not OpenWord(msword) then
begin
ShowMessage('Ошибка открытия MS Word');
exit;
end;
msword.Application.DisplayAlerts := false; // отключаем предупрежденияПоследний раз редактировалось M.A.D.M.A.N., 23.11.2013 в 12:49. |
|
#4
|
||||
|
||||
|
Цитата:
|
|
#5
|
|||
|
|||
|
с отладкой я не разговариваю.. не то что бы принципиально.
просто второй раз открыл делфи код. пользуюсь ShowMessage.. и открылись новые подробности дела. файл не открывается, потому что его НЕТУ!! более ранний метод не копирует шаблон , метод выглядит так CopyFile(PChar(templatepath + cbTemplate.Items[cbTemplate.ItemIndex]), PChar(frmMain.sdReport.FileName), true) почему не копирует для связки windows xp и word2003 НЕПОНИМАЮ!? |
|
#6
|
||||
|
||||
|
function OpenSample(var msw: OleVariant; path: string): boolean;
предполагается что у вас до вызова функции был предварительно создан объект Word. Код:
WordApp := CreateOleObject('Word.Application');
...
OpenSample(WordApp, 'c:\test.doc'); |
|
#7
|
||||
|
||||
|
Цитата:
p.s. Если CopyFile не может скопировать файл, она возвращает Ложь (False) и устанавливает в LastError код ошибки (справка в MSDN, справка по-русски). Узнать какая ошибка случилась можно примерно так: Код:
if not CopyFile(.....) then ShowMessage(SysErrorMessage(GetLastError)); |