Форум: "Прочее";
Текущий архив: 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.52 MB
Время: 0.058 c