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

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

Оффлайн CreatoR [?]

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

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

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия 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 Ответов
4612 Просмотров
Последний ответ Декабрь 10, 2014, 16:04:14
от InnI
10 Ответов
8360 Просмотров
Последний ответ Ноябрь 24, 2009, 18:15:23
от CreatoR
45 Ответов
21691 Просмотров
Последний ответ Январь 06, 2012, 23:02:33
от sov44
11 Ответов
5173 Просмотров
Последний ответ Сентябрь 26, 2011, 07:22:46
от madmasles
1 Ответов
2813 Просмотров
Последний ответ Февраль 09, 2012, 15:05:12
от Yuriy
1 Ответов
1897 Просмотров
Последний ответ Март 20, 2012, 13:10:08
от Yashied
13 Ответов
4901 Просмотров
Последний ответ Март 25, 2012, 20:53:34
от Matisse
14 Ответов
7918 Просмотров
Последний ответ Май 31, 2012, 19:33:31
от beliy
8 Ответов
3419 Просмотров
Последний ответ Январь 28, 2013, 22:28:24
от AZJIO
1 Ответов
222 Просмотров
Последний ответ Июнь 21, 2017, 07:55:11
от Garrett