Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2016, 10:00   #1
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию Ошибка при удалении файла

Доброе время суток!
Удаляю файлы при помощи DeleteFile, часть файлов не удаляется.
Вытянул при удалении GetLastError, часть от тех файлов что не удалились вернула код 6, по остальным вообще голяк.
Я так и не нашел, что это за ошибка с кодом 6, кто знает что это и как обойти?
Я так понял после нескольких таких ошибок удаление (перебор с FindNext) вообще затыкается, иначе были бы ошибки по остальным файлам?
Запускаю все от прав админа.
Replicant вне форума Ответить с цитированием
Старый 27.08.2016, 11:21   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Я так и не нашел, что это за ошибка с кодом 6
Цитата:
ERROR_INVALID_HANDLE
6 (0x6)
The handle is invalid.
Может файл открыт?
p51x вне форума Ответить с цитированием
Старый 27.08.2016, 15:21   #3
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Может файл открыт?
Может! Проверил, не совсем в этом дело. Если руками удалять файлы из винды, то удаляется без проблем.
Вернее Захожу в папку, которую удаляю программно (которая не удалилась и стала плеваться ошибками), нажимаю Ctrl+A, Shift+Del, почти все удаляется без проблем, остаются несколько файлов, которые действительно открыты.
Вот и непонятно, почему программно не удалились те файлы, которые спокойно удалились вручную?
И второй момент, как игнорировать то, что файл открыт и все равно его удалить?

Последний раз редактировалось Replicant; 27.08.2016 в 15:43.
Replicant вне форума Ответить с цитированием
Старый 27.08.2016, 15:36   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Кого искать? Ну поставьте бряк, где проверяете код ошибки и посмотрите имя.
p51x вне форума Ответить с цитированием
Старый 27.08.2016, 15:56   #5
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Кого искать? Ну поставьте бряк, где проверяете код ошибки и посмотрите имя.
Проверил, открытые не удаляет, но и закрытые стороной обходит, не ясно почему.
Replicant вне форума Ответить с цитированием
Старый 27.08.2016, 22:30   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Атрибуты файлов проверь, "только для чтение" надо снять
eoln вне форума Ответить с цитированием
Старый 28.08.2016, 19:35   #7
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Атрибуты файлов проверь, "только для чтение" надо снять
Делаю так, поидее атрибут только для чтения тут должен сниматься.
Цитата:
if SearchRec.Attr <> faArchive then
FileSetAttr(sFileName, faArchive);
if NOT DeleteFile(sFileName) then Form1.RichEdit1.Lines.Add('Can NOT delete: ' + sFileName);
Все равно игнорит некоторые файлы, прочел атрибуты данных, проигнорированных файлов:
Цитата:
8209
8224
8198
8230
8214
Что-то не соображу откуда такие значения, думал есть только комбинации из следующего:
Цитата:
faReadOnly : 1 : Файл только для чтения
faHidden : 2 : Скрытый файл
faSysFile : 4 : Системный файл
faVolumeID : 8 : Файл идентификатора объёма
faDirectory : 16 : Файл директории
faArchive : 32 : Архивный файл
faSymLink : 64 : Ярлык

Последний раз редактировалось Replicant; 28.08.2016 в 19:39.
Replicant вне форума Ответить с цитированием
Старый 28.08.2016, 20:13   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Что-то не соображу откуда такие значения, думал есть только комбинации из следующего:
Вы удивитесь, но https://msdn.microsoft.com/ru-ru/lib.../gg258117.aspx
p51x вне форума Ответить с цитированием
Старый 28.08.2016, 20:20   #9
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Спасибо, полезная инфа, но и тут не все атрибуты описаны, да и это не объясняет почему файлы не удаляются программно, при том, что руками это делается без проблем.
Replicant вне форума Ответить с цитированием
Старый 28.08.2016, 20:24   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Каких не хватает? Так надо смотреть, что возвращает функция удаления/гетластеррор/логи и т.д.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при удалении компонента Putin-mode Общие вопросы Delphi 18 24.01.2012 23:28
Ошибка при удалении из БД!!! Delphi 7. NuR1k БД в Delphi 2 21.08.2010 19:19
С++. Ошибка при удалении последней строки из файла _Dis_ Помощь студентам 12 28.08.2009 21:33
ошибка при удалении символа Virus191288 Общие вопросы Delphi 13 15.08.2009 14:50
Ошибка при удалении... JRcoker Общие вопросы Delphi 8 29.07.2008 22:53