| Автор
| Сообщение |
|
|
|
Цитата |
|
Задача:
Скопировать файл, использующийся и закрытый для чтения другой программой. Например PST при работающем Outlook'е, либо файл базы данных при работающем приложении чтения и записи в эту базу.
Убедительная просьба :!: не предлагать вариантов типа: А зачем тебе это? Или: Закрой Outlook, потом копируй... Необходимо сделать именно так.
Заранее спасибо  |
|
| В начало |
|
 |
|
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
А чем копируешь? Если CopyFile не срабатывает, значит, файл открыт с монопольным доступом. В этом случае скопировать его нельзя. Если же копируешь blockread/blockwrite, и они не срабатывают, попробуй перед открытием указать FileMode:=0;
Но в отношении баз данных такое "копирование" лучше не проводить. Полученный результат во многих случаях будет нерабочим. Дело в том, что файлы баз данных - файлы произвольного доступа. Пока идет копирование одного фрагмента, приложение может что-то писать в другой фрагмент. В результате после копирования получится фиг знает что. _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Спасибо...
Тады еще вопрос из теории: Можно ли сообщить приложению, что его база временно недоступна или типа того, но чтобы это было не очень критично, потом обработать ее (скопировать) и вернуть к ней доступ обратно? |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Смотря какому приложению. Если тобой написанному, то можно. Как сделать - зависит от твоей фантазии
А если чужому... В общем, базы данных обычно копируются по-другому. Запускается утилитка для ее резервирования, делается архив. А на другой машине потом она восстанавливается _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Утилитка должна поставляться с самим программным обеспечением, насколько я понял.
А если таковой не имеется? |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Самый простой способ - нати программу, которая использует файл, и временно ее "выгрузить"
правде с файлами типа Win386.swp даже это неприменимо  |
|
| В начало |
|
 |
 NikotiN
Розовый мамонт

Возраст: 26
Знак зодиака: 
Зарегистрирован: 18.03.2005
Сообщения: 2137
|
|
|
Цитата |
|
можно попробовать через MemoruStream.LoadFromFile
получается 50\50. но в основном пашет |
|
| В начало |
|
 |
|
|
|
Цитата |
|
Спасибо всем , тема закрыта...  |
|
| В начало |
|
 |
|