Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

Флаг открытого файла.   Найти похожие ветки 

 
Сатир   (2006-11-02 15:24) [0]

Как можно узнать, открыт ли файл?


 
Alien1769 ©   (2006-11-02 15:34) [1]

Может быть:
открыт для записи
открыт для чтения.

Уточни вопрос.


 
Desdechado ©   (2006-11-02 15:52) [2]

дежа вю
http://delphimaster.net/view/2-1162373363/


 
oldman ©   (2006-11-02 16:18) [3]


> Как можно узнать, открыт ли файл?

Кем?
Или чем?


 
BiN ©   (2006-11-02 16:51) [4]


> Сатир   (02.11.06 15:24)  
>
> Как можно узнать, открыт ли файл?

http://sysinternas.com
handleex
nthandle


 
Сатир   (2006-11-02 17:04) [5]


> дежа вю
> http://delphimaster.net/view/2-1162373363/

похоже, это мой коллега завёл ветку, с которым мы обсуждали этот вопрос:-)


 
Сатир   (2006-11-02 17:09) [6]


>
> похоже, это мой коллега завёл ветку, с которым мы обсуждали
> этот вопрос:-)

неа, обшибся. не он. просто синхронно возник вопрос в разных точках планеты:-)


 
Ketmar ©   (2006-11-02 17:18) [7]

>[0] Сатир 2-Nov-2006, 15:24
>Как можно узнать, открыт ли файл?
спросить у OS.


 
Сатир   (2006-11-02 17:19) [8]


> спросить у OS.

с помощью какой функции?


 
oldman ©   (2006-11-02 17:22) [9]


> Сатир   (02.11.06 17:19) [8]
>
> > спросить у OS.
>
> с помощью какой функции?
> <Цитата>


Если файл невозможно удалить, значит, он открыт другим приложением...
:))))))))))))))


 
Desdechado ©   (2006-11-02 17:36) [10]

> Если файл невозможно удалить, значит, он открыт другим приложением...
А если удалился, значит повезло вам,  но не повезло файлу :)))


 
Vga ©   (2006-11-02 17:40) [11]

Просто открыть на запись. Если вернет INVALID_HANDLE - значит открыт. Если нет - скорее всего не открыт (можно, насколько я знаю, открыть файл не запрещая другим программам запись в него, но это редко применяется).


 
oldman ©   (2006-11-02 17:41) [12]


> Vga ©   (02.11.06 17:40) [11]
> (можно, насколько
> я знаю, открыть файл не запрещая другим программам запись
> в него, но это редко применяется).


В БД блокируется только запись...


 
Ketmar ©   (2006-11-02 17:44) [13]

>[11] Vga(c) 2-Nov-2006, 17:40
>можно, насколько я знаю, открыть файл не запрещая другим
>программам запись в него
можно. и применяется.


 
Vga ©   (2006-11-02 17:46) [14]

> [13] Ketmar ©   (02.11.06 17:44)

Можно пример? А то лично я с этим не сталкивался...


 
Ketmar ©   (2006-11-02 17:52) [15]

>[14] Vga(c) 2-Nov-2006, 17:46
>Можно пример? А то лично я с этим не сталкивался...
запросто. real-time log viewer.


 
tesseract ©   (2006-11-02 17:54) [16]


> Vga ©   (02.11.06 17:46) [14]


res=CreateFile(Path,GENERIC_READ or GENERIC_WRITE,FILE_SHARE_READ or FILESHARE_WRITE,0,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,nil);


 
Vga ©   (2006-11-02 17:57) [17]

> [16] tesseract ©   (02.11.06 17:54)

Я просил пример использования. Кетмар такой пример дал, спасибо ему. А как самому открыть файл, не блокируя запись, я знаю.


 
старый маразматик(с)   (2006-11-02 18:05) [18]


> Vga ©   (02.11.06 17:40) [11]
> Просто открыть на запись. Если вернет INVALID_HANDLE - значит
> открыт

не на запись, а в эксклюзивном режиме. тогда-то и вылезет ошибка, если кто-то другой в него влез.


> Ketmar ©   (02.11.06 17:18) [7]
> спросить у OS.

а если файл валяется где-то там в сетке? тут систему разве спросишь?


 
Ketmar ©   (2006-11-02 18:17) [19]

>[18] старый маразматик(с) 2-Nov-2006, 18:05
>а если файл валяется где-то там в сетке? тут систему разве
>спросишь?
а что, система не в курсе, что там с файлом творится???


 
oldman ©   (2006-11-02 18:20) [20]

Автор топика наконец расколется, что это за файл и на фига ему это надо?
А то тут шастаем в потемках...


 
старый маразматик(с)   (2006-11-02 18:34) [21]


> Ketmar ©
а что, система не в курсе

а шо, есть доступ к системе сервера (к примеру там валяецца файл) с рабочей станции? я просто не в курсе, потому как никогда не надо было. но интересно. и примерчик


 
Сатир   (2006-11-02 18:42) [22]


> Автор топика наконец расколется, что это за файл и на фига
> ему это надо?

файл пользователя и пользователь его закрывает. но в разных потоках он может закрыться в разное время и при закрытии этого файла в другом потоке при вызове CloseFile возникает ошибка.
самое просто решение
try CloseFile except end;
но оно не красивое:-)
короче, нужно синхонизировать свои действия в разных потоках)


 
oldman ©   (2006-11-02 18:44) [23]


> файл пользователя и пользователь его закрывает. но в разных
> потоках он может закрыться в разное время и при закрытии
> этого файла в другом потоке при вызове CloseFile возникает
> ошибка.


мудрено что-то...


 
Ketmar ©   (2006-11-02 18:47) [24]

>[22] Сатир 2-Nov-2006, 18:42
а теперь по-русски.


 
старый маразматик(с)   (2006-11-02 18:51) [25]


> но в разных потоках он может закрыться в разное время

ну и шо с того? если поток его сам открывает, то спокойно может сам и закрыть. т.е. он и должен его сам закрыть. есть подозрение, шо дело в логике программы. например, открыл в одном потоке, закрываешь - в другом. получи ошибку.


 
старый маразматик(с)   (2006-11-02 18:52) [26]


> Ketmar ©   (02.11.06 18:47) [24]

редиска, ответь на нумер 21


 
Ketmar ©   (2006-11-02 18:54) [27]

>[26] старый маразматик(с) 2-Nov-2006, 18:52
>редиска, ответь на нумер 21
а ты сначала поясни -- что за сеть, что за сервер, etc. а то "подземный стук" получается. %-)


 
oldman ©   (2006-11-02 18:55) [28]


> файл пользователя и пользователь его закрывает. но в разных
> потоках он может закрыться в разное время


Если "файл пользователя и пользователь его закрывает", то почему он "закрывается в разных потоках"???


 
Ketmar ©   (2006-11-02 18:56) [29]

>[28] oldman(c) 2-Nov-2006, 18:55
>почему он "закрывается в разных потоках"???
устал, наверное. или у потоков игра такая -- "артиллерия бьёт по своим" (ц)


 
Сатир   (2006-11-02 19:04) [30]


> Если "файл пользователя и пользователь его закрывает", то
> почему он "закрывается в разных потоках"???

короче, самого кода я не видел. просто у человека возникла такая проблемма, вот и пытался ему помочь:-)


 
Ketmar ©   (2006-11-02 19:06) [31]

>[30] Сатир 2-Nov-2006, 19:04
>просто у человека возникла такая проблемма, вот и пытался ему помочь:-)
тебе найти в инете адреса клиник, где лоботомию делают? %-)


 
oldman ©   (2006-11-02 19:09) [32]


> Ketmar ©   (02.11.06 19:06) [31]
> тебе найти в инете адреса клиник, где лоботомию делают?


В параллельных потоках...
:)


 
umbra ©   (2006-11-02 19:16) [33]

нет универсального способа, кроме как запрашивать таблицу занятых дескрипторов у системы (что-то связанное с NTQuerySystemInformation :)) ИШ неоднократно приводил пример, и, скорее всего, он есть у него на сайте. Но даже этот способ 100% гарантии не дает, насколько я понял из обсуждений (сам этим интересовался)


 
Сало   (2006-11-02 19:21) [34]

А мне еще интересно, если создан хардлинк на файл - в таком случае вообще невозможно узнать, открыт ли файл, я прав?


 
Ketmar ©   (2006-11-02 19:22) [35]

>[34] Сало 2-Nov-2006, 19:21
>А мне еще интересно, если создан хардлинк на файл - в
>таком случае вообще невозможно узнать, открыт ли файл, я
>прав?
с чего бы?



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

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.043 c
2-1162295339
Alex_C
2006-10-31 14:48
2006.11.19
Как отловить сообщение EM_REPLACESEL?


1-1159882134
mazur_r
2006-10-03 17:28
2006.11.19
Работа с полями в Word.


15-1162275186
@!!ex
2006-10-31 09:13
2006.11.19
GetTickCount под досом


2-1162736309
Student2007
2006-11-05 17:18
2006.11.19
Узнать цвет PaintBox по заданным координатам...


2-1162480191
Riply
2006-11-02 18:09
2006.11.19
Два комонента, использующие OpenGL