Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DeleteFile [D7, WinXP]


Страницы:   1 2

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]

неверно.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо