Событие "файл занят для записи" в Delphi/Lazarus - Страница 2
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Событие "файл занят для записи" в Delphi/Lazarus

Событие "файл занят для записи" в Delphi/Lazarus

Ответ
Поиск в этой теме
Непрочитано 20.03.2013, 07:01
Событие "файл занят для записи" в Delphi/Lazarus
ETCartman
 
Регистрация: 09.12.2008
Сообщений: 4,643

Здравствуйте коллеги !
есть специфический вопрос по сабжу. В рамках написания программы необходимо считывать текстовый файл с диска. До этого посылается команда другой программе для записи данных в этот файл. Объем данных и время записи может быть разным и поэтому когда я обращаюсь чтобы считать данные - иногда вылетает ошибка Access Denied. Ставлю между командой на запись и чтением некую задержку, но это не всегда срабатывает.
есть идея каким то образом организовать цикл и периодически посылать запросы к файлу - занят он или закрыт. Если открыт то выходить из цикла и считывать его . Если закрыть то ждать немного и потом опять пытаться считать. Ну и так до определенного предела времени чтобы не вызвать зависание навсегда если что то не так
есть ли какое то специальное свойство в lazarus (delphi) чтобы определить открытость/закрытость файла не вызывая ошибку?
PS замечу что запуск стороннего приложения с флагом wait не работает. Это приложение в свою очередь использует другие подпрограммы, то есть мне именно нужно получить информцию о файле с которым оно работает.
Просмотров: 9990
 
Непрочитано 20.03.2013, 22:50
#21
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,968


Цитата:
CopyFile((APath+'\test.txt'), (APath+'\test1.txt'));
Самое простое и наверное разумное решение, все равно файл открыт совершенно в другой программе....
Я просто немного догадываюсь, разработкой какой программы занимается сейчас ETCartman
__________________
Работаю за еду.
Working for food.
Für Essen arbeiten.
العمل من أجل الغذاء
Працую за їжу.
DEM вне форума  
 
Непрочитано 20.03.2013, 23:18
#22
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


Если файл можно скопировать, значит его можно и открыть на чтение
в случае использования автором "устаревшего" метода с использованием файловых переменных путем предварительной модификации RTLной переменной отвечающей за режим открытия файлов связанных с файловыми переменными (это про Lazarus, в Delphi незнаю, но должно быть чтото похожее)
Код:
[Выделить все]
filemode:=fmOpenRead or fmShareDenyNone;
в случае более "современных" методов работы с файлами - напрямую указав в каком режиме открывается файл
Код:
[Выделить все]
FileHandle:=FileOpen(APath+'\test.txt', fmOpenRead or fmShareDenyNone);
или
Код:
[Выделить все]
FStream := TFileStream.Create(APath+'\test.txt', fmOpenRead or fmShareDenyNone);

Последний раз редактировалось zamtmn, 20.03.2013 в 23:23.
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Событие "файл занят для записи" в Delphi/Lazarus

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск