| 
| 
 | Вопрос # 156/ вопрос открыт / | 
 |  Здравствуйте. Есть приложение и некий файл Test.dat. Приложение периодически осуществляет чтение/запись в этот файл. Подскажите пожалуйста, как сделать так, чтобы пока приложение запущено файл Test.dat нельзя было скопировать проводником или Total commander'ом 
|  |   Вопрос задал: Романов М.Ю. (статус: Посетитель)Вопрос отправлен: 11 ноября 2006, 15:00
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Alex Van Glukhman Здравствуйте, Романов М.Ю.!
 var
 Form1: TForm1;
 // через этот поток мы будем работать с файлом.
 // Для нескольких файлов — несколько потоков.
 fs: TFileStream;
 
 implementation
 {$R *.dfm}
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 //при открытии вешаем ограничение. Теперь никто
 //не сможет трогать файл
 fs:=TFileStream.Create('D:\myfile.txt', fmOpenRead, fmShareDenyNone);
 end;
 
 procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
 //Снимаем ограничение.
 fs.Free;
 end;
 
 Удачи
 
|  | Ответ отправил: Alex Van Glukhman (статус: 7-ой класс)Время отправки: 11 ноября 2006, 16:38
 
 |  Ответ #2. Отвечает эксперт: Елизаров Алексей Дмитриевич Здравствуйте, Романов М.Ю.!Попробуйте использовать права для доступа к файлам.
 Их надо объявлять при инициализации переменной типа TFileStream.
 Вот они:
 fmShareCompat-всем приложениям разрешено работать с данным файлом.
 fmShareExlusive-никто, кроме Вашего приложения не может использовать файл.
 fmShareDenyWrite-другие приложения могут открыть файл только для чтения.
 fmShareDenyRead-другие приложения могут открыть файл только для записи.
 fmShareDenyNone-не мешать другим приложениям работать с файлом.
 
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |