![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DeleteFile [D7, WinXP]
Vova © (2008-11-12 14:21:00)Подскажите пожалуйста новичку,
Я пытаюсь удалить файл функцией DeleteFile
Всё нормально, но когда атрибут файла "только для чтения" функция не хочет его удалять и выдает ошибку #5,
В windows можно ведь любые файлы удалять и "только для чтения" и с другими атрибутами, как мне это сделать?
Vayrus (2008-11-21 14:29:00) [1]
> а самое главное это конечно sleep и Application.ProcessMessages
> :) без этого ничего не заработает
Заработает для мелковесных файлов
Palladin (2008-11-21 14:28:00) [2]
> Vayrus (21.11.08 14:20) [19]
а самое главное это конечно sleep и Application.ProcessMessages :) без этого ничего не заработает
Vayrus (2008-11-21 14:28:00) [3]
> А можно пояснить код ?
Сначало скидываем все атрибуты файла и если все получилось, то пытаемся удалить, пауза выставлена потому, что функция DeleteFile возвращает результат до того как фактически удалит файл, то есть мы даем, скажем так, дополнительное время для функции. А так как использование ПАУЗЫ подвешивает приложение (или если ты будешь удалять несколько файлов), то пришлось позаботиться и об этом - ProcessMessages.
Если ТРУЕ то все пучком, иначе что то пошло не так.
Vayrus (2008-11-21 14:20:00) [4]
> Еще один, которые не читал http://www.podgoretsky.com/OtherParts/DM/BadWill.
> aspx №4
Реклама?
> пояснения просты: откуда то содрано :)
Наглая лож, не всем же откуда то сдирать
> DeleteFileMain наводит на мысль, что должна быть еще функция
> для не главных файлов
Ни на че не наводит, взято на абум
> А может не главная?
Не надоело до слов докапываться?
Anatoly Podgoretsky (2008-11-21 12:30:00) [5]А может не главная?
clickmaker (2008-11-21 12:05:00) [6]DeleteFile Mainнаводит на мысль, что должна быть еще функция для не главных файлов
Palladin (2008-11-21 11:50:00) [7]
> А можно пояснить код ?
пояснения просты: откуда то содрано :)
Anatoly Podgoretsky (2008-11-21 11:42:00) [8]> Riply (21.11.2008 11:34:14) [14]
Тогда ты рисковый игрок :-)
Riply (2008-11-21 11:34:00) [9]> [13] Anatoly Podgoretsky © (21.11.08 11:29)
> Психотренировку пройти хочешь?
Неа. Просто интересно :)
Anatoly Podgoretsky (2008-11-21 11:29:00) [10]
> А можно пояснить код ?
Психотренировку пройти хочешь?
Anatoly Podgoretsky (2008-11-21 11:27:00) [11]
> Vayrus (21.11.08 10:06) [10]
Еще один, которые не читал http://www.podgoretsky.com/OtherParts/DM/BadWill.aspx№4
Riply (2008-11-21 11:14:00) [12]> [10] Vayrus (21.11.08 10:06)
А можно пояснить код ?
Vayrus (2008-11-21 10:06:00) [13]
function DeleteFileMain(ABWG: String): Boolean;
begin
RESULT := SetFileAttributes(PChar(ABWG), 0);
if RESULT then
begin
RESULT := DeleteFile(PChar(ABWG));
Application.ProcessMessages;
Sleep(500);
Application.ProcessMessages;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if DeleteFileMain('test.exe') then
ShowMessage('Done') else
ShowMessage('Error');
end;
Рамиль (2008-11-13 08:57:00) [14]Атрибут файла это dword, каждый бит отвечает за какой либо атрибут (или зарезервирован). Соот. надо сбросить биты readonly, hidden, system.
http://msdn.microsoft.com/en-us/library/aa915578.aspx
Palladin (2008-11-13 08:53:00) [15]
> Надо сделать правильно, как сделать правильно?
изучить, что такое биты и как с ними работать. операции or, and
ну и xor и not до кучи. понять что такое атрибуты файла, как они хранятся.
и тогда ты сможешь сделать правильно.
Vova (2008-11-13 00:45:00) [16]
> Неправильно, но для простейшего случая, тем более для удаления
> пойдет.
Надо сделать правильно, как сделать правильно?
Anatoly Podgoretsky (2008-11-12 16:44:00) [17]> clickmaker (12.11.2008 15:52:04) [4]
Ничего страшного, удалятся только часть файлов.
Anatoly Podgoretsky (2008-11-12 16:44:00) [18]> Vova (12.11.2008 15:10:02) [2]
Неправильно, но для простейшего случая, тем более для удаления пойдет.
clickmaker (2008-11-12 15:52:00) [19]> [2] Vova (12.11.08 15:10)
а если у файла окажутся еще атрибуты кроме 32 и 1?
Поросенок Винни-Пух (2008-11-12 15:18:00) [20]неверно.