-
Подскажите пожалуйста новичку, Я пытаюсь удалить файл функцией DeleteFile Всё нормально, но когда атрибут файла "только для чтения" функция не хочет его удалять и выдает ошибку #5, В windows можно ведь любые файлы удалять и "только для чтения" и с другими атрибутами, как мне это сделать?
-
сначала сбрось атрибут
-
> сначала сбрось атрибут
Сделал так как Вы посоветовали - работает, спасибо! ( if GetFileAttributes(PChar(fileName)) = 33 then SetFileAttributes(PChar(fileName), 32); )
-
неверно.
-
> [2] Vova (12.11.08 15:10)
а если у файла окажутся еще атрибуты кроме 32 и 1?
-
> Vova (12.11.2008 15:10:02) [2]
Неправильно, но для простейшего случая, тем более для удаления пойдет.
-
> clickmaker (12.11.2008 15:52:04) [4]
Ничего страшного, удалятся только часть файлов.
-
> Неправильно, но для простейшего случая, тем более для удаления > пойдет.
Надо сделать правильно, как сделать правильно?
-
> Надо сделать правильно, как сделать правильно?
изучить, что такое биты и как с ними работать. операции or, and ну и xor и not до кучи. понять что такое атрибуты файла, как они хранятся.
и тогда ты сможешь сделать правильно.
-
-
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;
-
> [10] Vayrus (21.11.08 10:06)
А можно пояснить код ?
-
-
> А можно пояснить код ?
Психотренировку пройти хочешь?
-
> [13] Anatoly Podgoretsky © (21.11.08 11:29)
> Психотренировку пройти хочешь?
Неа. Просто интересно :)
-
> Riply (21.11.2008 11:34:14) [14]
Тогда ты рисковый игрок :-)
-
> А можно пояснить код ?
пояснения просты: откуда то содрано :)
-
DeleteFileMain наводит на мысль, что должна быть еще функция для не главных файлов
-
А может не главная?
-
> Еще один, которые не читал http://www.podgoretsky.com/OtherParts/DM/BadWill. > aspx №4
Реклама? > пояснения просты: откуда то содрано :)
Наглая лож, не всем же откуда то сдирать > DeleteFileMain наводит на мысль, что должна быть еще функция > для не главных файлов
Ни на че не наводит, взято на абум > А может не главная?
Не надоело до слов докапываться?
-
> А можно пояснить код ?
Сначало скидываем все атрибуты файла и если все получилось, то пытаемся удалить, пауза выставлена потому, что функция DeleteFile возвращает результат до того как фактически удалит файл, то есть мы даем, скажем так, дополнительное время для функции. А так как использование ПАУЗЫ подвешивает приложение (или если ты будешь удалять несколько файлов), то пришлось позаботиться и об этом - ProcessMessages.
Если ТРУЕ то все пучком, иначе что то пошло не так.
-
> Vayrus (21.11.08 14:20) [19]
а самое главное это конечно sleep и Application.ProcessMessages :) без этого ничего не заработает
-
> а самое главное это конечно sleep и Application.ProcessMessages > :) без этого ничего не заработает
Заработает для мелковесных файлов
|