Мне нужно проверить, используется ли файл, прежде чем я попытаюсь получить к нему доступ. Есть ли способ сделать это в среде Lazarus?Lazarus: Как проверить, используется ли файл?
ответ
Открыть файл с FileOpen(FileName, fmOpenReadWrite or fmShareExclusive)
и проверить результат.
Обновление (спасибо комментатору Кена Уайта). Это не прямой ответ на ваш вопрос как FileOpen
Фактически получает доступ к файлу, но вы не должны выполнять проверку, а затем открывать файл, иначе вы получите условие гонки. Вы должны открыть файл, а затем проверить, удалось ли открыть.
Открытие файла с FileOpen
и доступ к файлу через его ручку может показаться незнакомым. Вы можете достичь той же цели при открытии файла, например. Rewrite
внутри a try-except
блок. Я не уверен в Lazarus, но в Delphi с использованием try-except
с высокоуровневыми файловыми процедурами требуется явный сброс IOResult в случае исключения (поместите SetInOutRes(0)
в раздел except
), в противном случае следующая операция файла завершится с ошибкой.
Конечно. Я должен добавить к своему ответу, что тест должен выполняться одновременно с получением доступа, иначе будет состояние гонки. Есть и другие способы открыть файл внутри блока try-except. Использование 'FileOpen' просто предоставляет исключение для выполнения проверки. – Inspired
+1. Намного лучше. :-) –
У вас нет. Вы пытаетесь открыть его и обрабатывать исключение, если и когда вы не можете.
Проверка того, что он используется, в первую очередь не имеет никакой цели.
Your code to see if it's in use says it's not
--->>> Another app opens the file, locking it
Your code to open file fails
Вместо этого используйте обычный try..except
блок:
try
FS := TFileStream.Create(YourFileName, fmOpenReadWrite, fmShareExclusive);
// Code to use file here
except
// Handle failure to access file
end;
Или используйте $ I +/I- и проверьте ioresult, если ваш I/O не основан на потоке. –
- 1. Как проверить, используется ли файл?
- 2. Как вы можете проверить, используется ли файл?
- 3. Как проверить, используется ли файл другим приложением?
- 4. Как проверить, используется ли текстовый файл?
- 5. Есть ли способ проверить, используется ли файл?
- 6. Есть ли способ проверить, что файл используется
- 7. Программно проверить, используется ли файл CSS
- 8. Как проверить, используется ли трансляция?
- 9. Как проверить, используется ли программа?
- 10. проверить, используется ли аудиосистема
- 11. Как проверить, используется ли файл другим процессом - Powershell
- 12. Bash: Как проверить, используется ли файл до сих пор
- 13. Python - Как проверить, используется ли файл другим приложением?
- 14. Как проверить, заблокирован ли файл/используется другим процессом NSIS
- 15. C++ как проверить, используется ли файл - многопоточная многопроцессорная система
- 16. В Lazarus, как проверить, присвоен ли в MenuItem битмап?
- 17. Как узнать, используется ли файл?
- 18. Delphi: проверьте, используется ли файл
- 19. Powershell - Проверьте, используется ли файл
- 20. Delphi 2010 - Используется ли файл?
- 21. MySql Slave, как проверить, используется ли он
- 22. Как проверить, используется ли входящий порт
- 23. Как проверить, используется ли индекс в Oracle
- 24. Eclipselink: как проверить, используется ли пул соединений
- 25. Как проверить, используется ли индекс в векторе
- 26. Как проверить, используется ли штрих-код?
- 27. Как проверить, используется ли предприятие Mongodb
- 28. Как проверить, используется ли грязная проверка?
- 29. Проверка вопроса, используется ли файл
- 30. Проверить файл с расширением .ocx используется или не используется vbscript
'попробовать ... except' конструкция не является достаточно хорошим для вас? –