Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

Теоретически всё правильно, а вот на практике ...   Найти похожие ветки 

 
1008 ©   (2004-10-04 14:13) [0]

Вставляю данные в Word документ следующим образом:

WA:=TWordApplication.Create(ZvitForm);
WD:=TWordDocument.Create(ZvitForm);
fname:=ExtractFilePath(Application.ExeName)+"shablon.dot";
WA.Documents.Open(fname,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam);
WD.ConnectTo(WA.ActiveDocument);
replace:=1;
for i:=1 to 10 do begin
oldStr:="@"+inttostr(i);
case i of
 1: newStr:=usurname;
 2: newStr:=uname;
 3: newStr:=upatronimic;
 ...
end;
WD.Range.Find.Execute(oldStr,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      newStr,
                      replace,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam);

end;//for i:=1 to 11 do begin
WD.Close;
WA.Quit;

WA.Free;
WD.Free;


В выделенном фрагменте возникает ошибка, но на двух из четырёх машин, на которых я проверял работу программы. Формально всё делал по иснтрукции и всё делал вроде как правильно, но реально возникает ошибка OLE Error C0000005.
Работоспособность на WinXP   + Office2003    - нормально
                    Win98SE + Office2000Pro - нормально
ещё на двух машинах с Win98SE + Office2000 - вылетает указанная ошибка.
Кто-нибудь знает с чем это может быть связано?


 
KSergey ©   (2004-10-04 14:19) [1]

Вероятнее всего - различия в версиях офиса. Вообще в этом смысле надежнее использовать позднее связывание.


 
1008 ©   (2004-10-04 14:44) [2]

KSergey ©  (04.10.04 14:19) [1]

Есть, например, моя машина с Win 4.10.2222 A и Word 9.0.2812
и соседняя с Win 4.10.2222 A и Word 9.0.2812 (из отличий от моей системы нашёл то, что папка, которая у меня именуется: "Мои документы" на соседней машине именуется "My Documents").

А что такое позднее связывание и как его осуществить?


 
clickmaker ©   (2004-10-04 14:45) [3]


> [1] KSergey ©   (04.10.04 14:19)
> Вероятнее всего - различия в версиях офиса. Вообще в этом
> смысле надежнее использовать позднее связывание.

Чем надежнее? Если различия в количестве или типах параметров, то оно не спасет. Тогда уж надо версию проверять


 
1008 ©   (2004-10-04 14:49) [4]

Кстати такие вещи как определение версии:

wordver:=WA.Version;
tmps:="";
for i:=1 to length(wordver) do if wordver[i]="." then break else tmps:=tmps+wordver[i];
if strtoint(tmps)<9 then begin
messagebox(ZvitForm.Handle,"Нужна версия не ниже 2000","Error!!!",mb_ok);
WA.Free;
WD.Free;
close;
end;

и некоторые проверки я опустил задавая вопрос.


 
YurikGL ©   (2004-10-04 16:21) [5]

app:Variant;

try
 app := CreateOleObject("Word.Application");
 App.Visible := True;

работаем с вордом

finally
 App:=Unassigned;
end;


 
1008 ©   (2004-10-04 16:34) [6]

YurikGL ©  (04.10.04 16:21) [5]

Спасибо. Попробую.



Страницы: 1 вся ветка

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-1097174259
RedDragon
2004-10-07 22:37
2004.10.24
Как проверить папку на наличие файл с определённым именем........


1-1097136517
Arnold
2004-10-07 12:08
2004.10.24
Поиск в TreeView


14-1096563673
Rouse_
2004-09-30 21:01
2004.10.24
IRQ канал Мастера Дельфи...


8-1085250190
Forelli
2004-05-22 22:23
2004.10.24
Как вставить Flash ролик в Delphi


1-1097500992
neznaika
2004-10-11 17:23
2004.10.24
MDIChild в DLL-ке