-
1. doc файл-шаблон с метками, заменяется на данные и сохраняется на шаре. Программа работает через планировщик, на отдельном компьютере, без человека. Запускается, проверяет задания, делает, закрывается.
WordApp := CreateOleObject('Word.Application'); WordApp.DisplayAlerts := False; WordDoc := WordApp.Documents.Open(FilePattern); .. WordDoc.SaveAs(FileSaveAs);
2. Затем кто-то открывает КонкретныйFileSaveAs (.doc) Вордом и не закрывает Word. Идет на обед.
3. Следующее сохранение КонкретныйFileSaveAs.doc не выдает ошибку типа "Файл занят" или еще какую А программа ждет (возможно, кидала бы окно с сообщением, если "нормально" открывать). try WordDoc.SaveAs(FileSaveAs); except не попадает в секцию Except И даже когда человек закроет у себя файл - дальше не идет. Надо снимать процесс, прибивать MsWord.
Вопрос: Как этого не допустить / обойти ?
-
Идея такая файл сначала проверить, сделать копию, попробовать удалить Если удалился, то сохранить WordDoc.SaveAs(FileSaveAs);
Но как-то не нравится.. Опцию бы какую мне ) аля WordApp.Options.Skip_If_Oblom
-
> Вопрос: Как этого не допустить / обойти ?
Запретить обедать, разумеется. От еды все беды.
-
наверняка можно в IStream сериализовать...
-
ну да. нафиг юзать оле, когда формат открыт давно?
-
> ну да. нафиг юзать оле, когда формат открыт давно?
- OLE уже используется. TStreamAdapter в TMemoryStream - всяко проще, чем покупать компонент который адекватно поддерживает формат...
|