|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.12.2014, 07:57 | #21 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
08.12.2014, 08:04 | #22 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Stilet, я не пробовал API-функцию, которая копирует файлы. Копирование предложил пользователь Полный 30h.
Но в языке программирования VBA есть функция FileCopy, которая не позволяет копировать, если файл открыт. Файлы бывают разные, поэтому может быть для каких-то файлов копирование не вызовет ошибку. Excel-файлы нельзя копировать с помощью VBA-функции FileCopy, если Excel-файл открыт. Я предположил, что есть API-функция, которая работает аналогично VBA-функции FileCopy. |
08.12.2014, 09:39 | #23 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
08.12.2014, 10:39 | #24 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а давайте пойдем от противного, зачем вам знать открыть ли файл?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
08.12.2014, 11:50 | #25 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Пепел Феникса, задача такая: нужно внести изменения в несколько файлов.
Сложность: если файлы находятся на сетевом компьютере, то какой-то пользователь может открыть файл и тогда нельзя будет внести изменения в файл. Поэтому удобнее сначала проверить, закрыты ли файлы, а затем уже начать работу. |
08.12.2014, 12:13 | #26 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
А чем не устраивает проверка путем открытия файла?
Все равно другая проверка вам ничего не даст - мы живем в многопоточном мире. Проверка скажет "файл не используется" но пока вы его откроете его откроет кто-то другой, и что тогда делать? |
08.12.2014, 12:14 | #27 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
вы со своими методами можете легко попасть в ситуацию что проверили, все ок, а потом пытаетесь открыть, а файл уже занят. сумели открыть, работайте, не смогли, живем дальше. если используете Делфи то применяйте try/except, если WinAPI чистый то анализируйте результат от CreateFile(а потом GetLastError). в общем так или иначе обрабатывайте ошибки, отказано в открытии файла может быть по многим причинам(например админ с правами напортачил). И запрашивайте только нужные вам права на файл, в том числе блокировки. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
08.12.2014, 12:21 | #28 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
waleri, я не программист, поэтому мне кажется нелогичной ситуация, когда, чтобы узнать, используется файл или нет, его нужно открыть. Мне со стороны кажется это неправильным и глупым. Поэтому поинтересовался, может быть есть прямой способ узнать, открыт файл или нет. Подумал, может быть для этого есть API-функция.
Выбора нет, поэтому я так и буду делать - открывать файл в определённом режиме и смотреть, произошла ошибка или нет. По поводу того, что файл может быть открыт после проверки. Это усложнит, но такое может быть не очень часто и пользователям не прибавит неудобств. Последний раз редактировалось Скрипт; 08.12.2014 в 12:24. |
08.12.2014, 12:21 | #29 | |
Пользователь
Регистрация: 10.12.2011
Сообщений: 26
|
Цитата:
В конце концов если этому кому то критично что содержимое изменится, то это его головная боль, нефиг было FILE_SHARE_WRITE указывать.
Меня постоянно преследуют умные мысли, но я быстрее!
|
|
08.12.2014, 12:25 | #30 |
Пользователь
Регистрация: 10.12.2011
Сообщений: 26
|
Всё вполне логично, твоя основная задача по сути файл всё же открыть. Ты пробуешь, если не открывается значит занято.
Меня постоянно преследуют умные мысли, но я быстрее!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как программно определить, что файл уже кем-то открыт? | AlexSoft777 | Общие вопросы Delphi | 6 | 05.07.2011 22:05 |
Проверка открыт ли файл в сети | Klim Bassenger | Microsoft Office Excel | 4 | 29.09.2010 20:50 |
Как определить закрыт или открыт текстовый файл | ZvEr_HaCkEr | Общие вопросы Delphi | 3 | 28.07.2010 17:33 |
Из программы 1.exe создаем пустой файл 2.exe. Как из программы 1 внести API функции в программу 2? | X-LEV-X | Общие вопросы Delphi | 7 | 09.03.2010 08:33 |
Как узнать, открыт ли файл? | #32 | Microsoft Office Excel | 5 | 30.10.2009 12:04 |