Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Завтра :

День славянской письменности и культуры


Копирование закрытых (использующихся) файлов


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
AJforeverandever
Гость







СообщениеСб, 12-Мар-2005 10:06    Заголовок сообщения: Копирование закрытых (использующихся) файлов
Цитата

Задача:

Скопировать файл, использующийся и закрытый для чтения другой программой. Например PST при работающем Outlook'е, либо файл базы данных при работающем приложении чтения и записи в эту базу.

Убедительная просьба :!: не предлагать вариантов типа: А зачем тебе это? Или: Закрой Outlook, потом копируй... Необходимо сделать именно так.

Заранее спасибо LOL
В начало
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеСб, 12-Мар-2005 13:07 
Цитата

А чем копируешь? Если CopyFile не срабатывает, значит, файл открыт с монопольным доступом. В этом случае скопировать его нельзя. Если же копируешь blockread/blockwrite, и они не срабатывают, попробуй перед открытием указать FileMode:=0;
Но в отношении баз данных такое "копирование" лучше не проводить. Полученный результат во многих случаях будет нерабочим. Дело в том, что файлы баз данных - файлы произвольного доступа. Пока идет копирование одного фрагмента, приложение может что-то писать в другой фрагмент. В результате после копирования получится фиг знает что.

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
AJforeverandever
Гость







СообщениеВс, 13-Мар-2005 18:31 
Цитата

Спасибо... YES !!!

Тады еще вопрос из теории: Можно ли сообщить приложению, что его база временно недоступна или типа того, но чтобы это было не очень критично, потом обработать ее (скопировать) и вернуть к ней доступ обратно?
В начало
DrPass
Знающий :)
/Почетный Модератор/


Возраст: 31
Знак зодиака: Лев
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
СообщениеВс, 13-Мар-2005 18:46 
Цитата

Смотря какому приложению. Если тобой написанному, то можно. Как сделать - зависит от твоей фантазии :)
А если чужому... В общем, базы данных обычно копируются по-другому. Запускается утилитка для ее резервирования, делается архив. А на другой машине потом она восстанавливается

_________________
Да пребудет с вами Сила!
В начало
Посмотреть профиль Отправить личное сообщение
AJforeverandever
Гость







СообщениеВт, 15-Мар-2005 11:08 
Цитата

Утилитка должна поставляться с самим программным обеспечением, насколько я понял. Идея!
А если таковой не имеется?
В начало
slon
Гость







СообщениеПн, 21-Мар-2005 10:10 
Цитата

Самый простой способ - нати программу, которая использует файл, и временно ее "выгрузить" Улыбка
правде с файлами типа Win386.swp даже это неприменимо Улыбка
В начало
Пол:Муж NikotiN
Розовый мамонт


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 18.03.2005
Сообщения: 2137

СообщениеВт, 22-Мар-2005 17:47 
Цитата

можно попробовать через MemoruStream.LoadFromFile
получается 50\50. но в основном пашет
В начало
Посмотреть профиль Отправить личное сообщение
AJforeverandever
Гость







СообщениеЧт, 24-Мар-2005 8:08 
Цитата

Спасибо всем YES !!! , тема закрыта... Вешалка
В начало
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100