Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2015, 16:28   #1
kotov-zhenja
Пользователь
 
Регистрация: 03.07.2010
Сообщений: 38
По умолчанию Проверка занятости файла другими процессами

Разрабатываю программу сканирующую ВСЕ файлы для поиска там значения, проблема заключаться в том, что имеются файлы занятые другими процессами. Использование IsOpen не дает 100% результат, что можно еще использовать?
kotov-zhenja вне форума Ответить с цитированием
Старый 02.09.2015, 16:45   #2
kotov-zhenja
Пользователь
 
Регистрация: 03.07.2010
Сообщений: 38
По умолчанию

Использую TFileStream
kotov-zhenja вне форума Ответить с цитированием
Старый 02.09.2015, 16:47   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

М.м.м... Попытка открыть эксклюзивно. Не знаю что за IsOpen такой.
Теоретически еще можно открывать процессы и получать список открытых ими хендлов. Где-то была у мну пример функции, могу поискать, но ИМХО этого делать не стоит. Если файл не открыт, нужно просто уведомить пользователя после сканинга что такой-то требует повторения открытия.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2015, 16:51   #4
kotov-zhenja
Пользователь
 
Регистрация: 03.07.2010
Сообщений: 38
По умолчанию

IsOpen показывает занят ли файл, работает отлично пока дело не доходит до системных файлов, тут он не работает

у TextFile есть проверка IOResult, может у TFileStream тоже есть что то на подобие

Последний раз редактировалось Stilet; 02.09.2015 в 16:58.
kotov-zhenja вне форума Ответить с цитированием
Старый 02.09.2015, 16:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нет. FileStream окучивается в Try Except и так обрабатывает ошибки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2015, 17:12   #6
kotov-zhenja
Пользователь
 
Регистрация: 03.07.2010
Сообщений: 38
По умолчанию

А что насчет эксклюзивности? Уж очень много файлов попадают в этот список
kotov-zhenja вне форума Ответить с цитированием
Старый 02.09.2015, 17:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну эксклюзивность все равно только проверит
Забоченные файлы все равно будут попадать.
Проверить можно примерно так
Код:
try with TFileStream.Create(Файл,fmShareExclusive) do free; except Файл злочен; end;
Писано с потолка, за подробности и качество не ручаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.09.2015, 17:58   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,777
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
FileStream окучивается в Try Except и так обрабатывает ошибки.
Не знаю, как в новых версиях, а в Borland Delphi у TFileStream был безобразно реализован совместный доступ к создаваемым им самим файлам -- созданный в программе файл нельзя было просматривать в Far до его закрытия. Если в новых версиях исправили, хорошо.

К задаче ТС это касательства не имеет, просто хочу показать, что TFileStream -- спорный класс.

По теме задачи ничего сказать не могу. Несмотря на недостатки TFileStream, мне как-то хватало его исключений.
Vapaamies вне форума Ответить с цитированием
Старый 02.09.2015, 18:21   #9
kotov-zhenja
Пользователь
 
Регистрация: 03.07.2010
Сообщений: 38
По умолчанию

Файл открывается, но вот при чтение вылетает ошибка, при что файл занят другим процессом, хотя файл открывается в блокноте
kotov-zhenja вне форума Ответить с цитированием
Старый 02.09.2015, 18:24   #10
kotov-zhenja
Пользователь
 
Регистрация: 03.07.2010
Сообщений: 38
По умолчанию

В ХЕ6 TFileStream работает более стабильно чем TextFile, может есть что то более стабильное?
kotov-zhenja вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Javascript, проверка занятости логина на странице. webber9989 Работа с сетью в Delphi 3 27.11.2012 10:23
Проверка занятости DOS не работает fire_on Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.09.2012 16:01
Проверка архивов rar, zip, arj, 7z на наличие файла используя cmd-файла cerberochek Win Api 5 05.10.2011 19:26
Картинка занятости системы ADSoft PHP 7 11.08.2009 22:54
проверка наличия файла Juffin Общие вопросы Delphi 2 18.04.2009 14:17