Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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-не мешать другим приложениям работать с файлом.

Приложение:
  1. [B]var[/B]
  2. [B]f:TFileStream[/B]
  3. [B]begin[/B]
  4.  
  5.  
  6. [B]f.free;[/B]


Ответ отправил: Елизаров Алексей Дмитриевич (статус: 1-ый класс)
Время отправки: 12 ноября 2006, 18:25


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:51
Выполнено за 0.02 сек.