![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Доступ к файлу, занятому другим процессом [D7]
Gloomer © (2006-09-24 21:13:00)В строке
Stream := TFileStream.Create(FileName+fDLog, fmOpenRead);
вылетает ошибка "Процесс не может получить доступ к файлу, т.к. файл занят другим процессом"
На что надо заменить fmOpenRead ?
Ketmar (2006-09-24 23:52:00) [1]>[8] ProgRAMmer Dimonych 24-Sep-2006, 23:38
>и по фигу, кто там что поменял за
>время работы.
особенно, если это файл со структурой и данными, например. закешированый программой. ей будет очень удивительно.
ProgRAMmer Dimonych (2006-09-24 23:38:00) [2]Есть ещё TMemoryStream с методом LoadFromFile. Читаем, меняем всё, что душе угодно, вызываем SaveToFile и по фигу, кто там что поменял за время работы.
Ketmar (2006-09-24 23:13:00) [3]>[6] Gloomer(c) 24-Sep-2006, 23:12
>2 Ketmar
>Оно самое - спасибо
только учти -- это опасно. мало ли, что там, в файле, поменяют, пока ты его читаешь.
Gloomer (2006-09-24 23:12:00) [4]2 Ketmar
Оно самое - спасибо
Ketmar (2006-09-24 22:25:00) [5]fmShareDenyNone
Gloomer (2006-09-24 21:33:00) [6]Нет - не они.
Процесс, который держит - известен.
При этом при открытии тем же блокнотом процесс уже запущен и использует нужный файл и блокнот его открывает.
Правильный Вася (2006-09-24 21:25:00) [7]>>> файл прекрасно открывается другими программами
они его и держат???
Gloomer (2006-09-24 21:20:00) [8]Изначально так и было.
Точнее, использовалось TStrings.LoadFromFile, где так и описано
Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
Но это не решает проблемы.
При этом файл прекрасно открывается другими программами
Ketmar (2006-09-24 21:14:00) [9]добавить ro fmShareDenyWrite, например. или почитать, наконец, справку...