![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Задача состоит в следующем, необходимо дождаться завершения редактирования файла и загрузить измененный файл в базу. Файл открывает пользователь программой по умолчанию. В данный момент меня интересую файлы офиса(.doc, excel). Стандартный подход ожидания окончания редактирования файла это проверять файл, занят ли он каким то процессом. Т.е. я делаю так:
При использование Microsoft Office все работает. Проблемы начинаются при использования OpenOffice. OpenOffice как и MS Office использует один процесс для открытия нескольких документов, но почему то FileIsBusy возвращает false после первого же сохранения изменений в документе через OpenOffice. Такое ощущение что OpenOffice отпускает файл. Может кто то сталкивался с такой проблемой? |
|||
|
||||
SPrograMMer |
|
|||
![]() Спамер :) ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 5.11.2004 Где: Краснодар Репутация: 2 Всего: 6 |
-------------------- животное = зверь законченный гентушник |
|||
|
||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
И что там есть, что мне поможет? Может я не совсем подробно описал что мне нужно. Мне не нужен монитор изменения файлов, мне нужно дождаться окончания редактирования файла пользователем и после этого загрузить измененный файл в базу. Это сообщение отредактировал(а) cemick - 10.12.2010, 11:53 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
можно использовать sysinternals processmonitor, чтоб определить, как себя ведет с файлом openoffice
|
|||
|
||||
SPrograMMer |
|
||||||
![]() Спамер :) ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 5.11.2004 Где: Краснодар Репутация: 2 Всего: 6 |
Это и есть мониторинг файла ![]() Добавлено @ 13:22
из этого вам нужно всего лишь одно Это сообщение отредактировал(а) SPrograMMer - 10.12.2010, 13:22 -------------------- животное = зверь законченный гентушник |
||||||
|
|||||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
SPrograMMer, блокирование файла(открытие в режиме fmShareExclusive) несколько отличается от операций создания/модификации/удаления файла.
|
|||
|
||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
skyboy
Пытался использовать процесс монитор, но там каша, слишком много сообщений. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
там же гибкая система фильтрации.
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Отпускание файла не воспроизводится. Проверял так: создал документ, сохранил, закрыл. Дабл клик на файле - открылся. Попробовал переименовать файл - не даёт, блокирует. Сохранил файл в офисе. Снова попробовал переименовать - всё ещё не пускает. Проверь свою FileIsBusy так же. Если дан есть exclusive, как она тебе сообщает, то файл можно удалить или переименовать. Как вариант - следить по наличию вспомогательного .~lock.имядокумента.odt# Вопрос конкретно в OpenOffice или нужно решение для общего случая? Для общего случая решения не существует. У нормальных программ есть кнопка типа "редактирование закончено". -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
cemick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 416 Регистрация: 6.7.2006 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Злостный хак решил проблему:
Что происходит? Такое ощущение, что OO после сохранения на некоторое время отпускает файл и снова эксклюзивно занимает. Это проблема была не только на моей машине, но и на многих других. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |