Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

Доступ к файлу   Найти похожие ветки 

 
Onix1970 ©   (2005-04-22 10:29) [0]

Доброго времени суток уважаемые. Подскажите пожалуйста как узнать занят ли файл каким либо другим процессом или нет?


 
Fay ©   (2005-04-22 11:26) [1]

CreateFile("c:\boot,ini", 0, 0, nil, OPEN_EXISTING, 0, 0)


 
onix1970 ©   (2005-04-22 11:36) [2]

Не совсем то. Файл уже есть и он допустим занят блокнотом или другой программой. Моя прога тоже пытается получить доступ к файлу, чтобы дописать в него. Я так думаю произойдет ошибка. Каким образом отловить и обработать это исключение ?


 
Fay ©   (2005-04-22 11:38) [3]

[1] + F1


 
Alexander Panov ©   (2005-04-22 12:05) [4]

onix1970 ©   (22.04.05 11:36) [2]
Файл уже есть и он допустим занят блокнотом или другой программой.


Блокнот/Notepad никогда не захватывает файл, как, впрочем, и многие другие программы.
Файл захватывается на короткое время для загрузки в память и закрывается.


 
onix1970 ©   (2005-04-22 12:33) [5]

Моя прога каждые 10 мин. сканирует БД на предмет изменения. Если есть, то дописывает в файл эти изменения. Есть другая прога (не моя), которая следит не подключился ли клиент по модему. Как только происходит подключение, то эта прога начинает передавать этот файл. Вот в связи с этим и возник вопрос. Ведь запросто они могут в одно и тоже время "захотеть" получить доступ к файлу. Мне нужно узнать, если файл заняла прога для передачи, то погодить с обновлением.


 
Юрий Зотов ©   (2005-04-22 12:34) [6]

> onix1970 ©   (22.04.05 11:36) [2]

См. [1] и [3]. Там все верно.


 
xShadow ©   (2005-04-22 12:45) [7]

{$HINTS OFF}
Function CheckRW( const FileName: String ): Boolean;
var F : File;
   FM: Integer;
Begin
   FM := FileMode;
   FileMode := 2;
   AssignFile( F, FileName );
   {$I-}ReSet( F, 1 );{$I+}
   Result := IOResult = 0;
   if not Result then
   Begin
      FileMode := FM;
      Exit;
   end;
   {$I-}CloseFile( F );{$I+}
   Result := IOResult = 0;
   FileMode := FM;
end;
{$HINTS ON}


Работала сия конструкция ещё в паскале


 
Alexander Panov ©   (2005-04-22 13:15) [8]

onix1970 ©   (22.04.05 12:33) [5]

В таком случае проблема решается просто - делай попытку захватить файл в исключительной использование. Если возникает ошиба доступа - файл занят.


 
onix1970 ©   (2005-04-22 15:35) [9]

Всем большое спасибо. Разобрался



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
6-1111724084
Ozone
2005-03-25 07:14
2005.06.14
Полное описание протокола SMTP


6-1111579314
Radgar
2005-03-23 15:01
2005.06.14
SendBuf


11-1098792092
Loader
2004-10-26 16:01
2005.06.14
Обработка сообщений в сетевом приложении на KOL


3-1115902646
MakNik
2005-05-12 16:57
2005.06.14
dxDBGrid


3-1115363296
dmitry501
2005-05-06 11:08
2005.06.14
Запрос к MSSQL через ADOQuery c параметрами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский