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

Вниз

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

 
Сатир   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.044 c
15-1162384104
UMU
2006-11-01 15:28
2006.11.19
Delphi 7 и Turbo Delphi Explorer


15-1162483189
Slava812
2006-11-02 18:59
2006.11.19
Головоломка


15-1162485265
nutlover
2006-11-02 19:34
2006.11.19
Орешник


15-1161973724
DillerXX
2006-10-27 22:28
2006.11.19
Комментируете ли вы свои сорцы


15-1161964546
Palladin
2006-10-27 19:55
2006.11.19
юридический вопрос





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский