Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6310
Последний выпуск: 19.06.2015

Читаем из файла, открытого другим приложением.

Автор: Juan Antonio Navarro Perez
www.исходники.ru

Даже если файл открыт с низкими привелегиями (используя ReadOnly, ShareReadWrite) , иногда открытие уже открытого файла может приводить к ошибкам, особенно, если это файл интенсивно используется другим приложением. Самый простой способ решить эту проблемму - это использовать MemoryStream вместо непосредственного доступа к файлу:

var Memory : TMemoryStream; 

begin 
  Memory := TMemoryStream.Create; 
  try 
    Memory.LoadFromFile('busyfile.dat'); // это он!! 
    .. 
    Memory.Read(...); // Вы можете использовать методы чтения как у файлов 
    Memory.Seek(...); 
    FileSize := Memory.Size; 
    .. 
  finally 
    Memory.Free; 
  end; 
end; 

Данный способ никогда не открывает файл, а заместо этого создаёт копию его в памяти. Конечно Вы можете и записать в поток (Stream) в Памяти(Memory), но изменения не будут записаны на диск до тех пор, пока Вы не запишете их в файл (командой SaveToFile).

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
Мне нравитсяМне не нравится
31 мая 2006, 07:15:43
Иван, знаешь, ворд открывает файл с гораздо большими привилегиями нежели ShareReadWrite
2.
Аноним
Мне нравитсяМне не нравится
9 мая 2005, 01:25:18
Ничего подобного !
Juan Antonio Navarro Perez - Открой вордовский файл - увидишь нехорошую мессагу !!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог