Автор Тема: [Баг] Удаление открытого файла  (Прочитано 6219 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7808
  • Репутация: 2281
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Код: AutoIt [Выделить]
$hFile = FileOpen('test.txt', 2)
FileWrite($hFile, 'test')

MsgBox(64, '', 'FileExists: ' & FileExists('test.txt') & ' = "'  & FileRead('test.txt') & '", delete the file and press OK.')
MsgBox(64, '', 'FileExists: ' & FileExists('test.txt') & ' = "'  & FileRead('test.txt') & '"')

FileClose($hFile)
MsgBox(64, '', 'FileExists: ' & FileExists('test.txt') & ' = "'  & FileRead('test.txt') & '"')


Запускаем скрипт и удаляем рядом файл test.txt, результат мне не понятен.
Во-первых, почему файл удаляется, а во-вторых, почему FileWrite возвращает 1?

Если это всё не баги, то каким образом можно осуществить проверку того, что файл был изменён и что запись в него уже не актуальна?
Можно конечно проверять перед записью что файл удалён, но хотелось бы проверять это более корректно, ведь файл ещё может быть изменён...

AutoIt 3.3.10.0 (x86), Win7 x64 Rus.
« Последнее редактирование: Февраль 18, 2015, 01:50:41 от CreatoR »


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

[Баг] Удаление открытого файла
« Отправлен: Февраль 18, 2015, 01:44:59 »

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2532
  • Репутация: 432
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: [Баг] Удаление открытого файла
« Ответ #1, Отправлен: Февраль 18, 2015, 02:09:04 »
может быть остановка скрипта работает в глобальном масштабе?  то же самое происходит, если вместо sleep использовать MsgBox. получается, что все дескрипторы освобождаются, то есть "как бы" :)
интересный момент, если вместо sleep установить
Код: AutoIt [Выделить]
FileDelete('test.txt')

то файл сразу не удалится, но после закрытия дескриптора произойдет удаление. это что? отложенное задание? и функция удаления возвращает успех.
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2314
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: [Баг] Удаление открытого файла
« Ответ #2, Отправлен: Февраль 18, 2015, 05:35:30 »
CreatoR  [?]
Цитировать
почему файл удаляется
Похоже, что FileOpen() возвращает полностью расшаренный (BitOR($FILE_SHARE_READ, $FILE_SHARE_WRITE, $FILE_SHARE_DELETE)) дескриптор, потому он и удаляется без проблем.

Русское сообщество AutoIt

Re: [Баг] Удаление открытого файла
« Ответ #2 Отправлен: Февраль 18, 2015, 05:35:30 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
4669 Просмотров
Последний ответ Декабрь 10, 2014, 16:04:14
от InnI
10 Ответов
8575 Просмотров
Последний ответ Ноябрь 24, 2009, 18:15:23
от CreatoR
45 Ответов
22155 Просмотров
Последний ответ Январь 06, 2012, 23:02:33
от sov44
11 Ответов
5260 Просмотров
Последний ответ Сентябрь 26, 2011, 07:22:46
от madmasles
1 Ответов
2894 Просмотров
Последний ответ Февраль 09, 2012, 15:05:12
от Yuriy
1 Ответов
1921 Просмотров
Последний ответ Март 20, 2012, 13:10:08
от Yashied
13 Ответов
5029 Просмотров
Последний ответ Март 25, 2012, 20:53:34
от Matisse
8 Ответов
3482 Просмотров
Последний ответ Январь 28, 2013, 22:28:24
от AZJIO
1 Ответов
266 Просмотров
Последний ответ Июнь 21, 2017, 07:55:11
от Garrett
3 Ответов
244 Просмотров
Последний ответ Октябрь 03, 2017, 19:17:46
от Visors