Другие языки программирования и технологии
как через Pascal удалить папку? и можно ли это вообще сделать?
знаю как удалить файл, но можно ли удалить папку? Если кто знает, подскажите плиз
FindFirst - ищет файл в заданном каталоге каталоге.
FindNext - продолжает поиск файлов в заданном каталоге.
Erase - удаляет файл.
Remove - удаляет пустой каталог.
алгоритм такой:
1)находишь первый файл в каталоге с помощъю FindFirst,одним из возвращаемых параметров файла должна быть структура о которой вы можете много прочесть в интернетах или документации к компилятору.
2)передаете эту структуру функции FindNext,которая будет вызываться в цикле с условием While DosError = 0,пока DosError не равен нулю, значит файлы есть в каталоге и их надо оттуда удалять.
3)удаляем файл с помощъю Erase,если он был найден.
4)после того как в DosError запишется чтот окроме нуля, можно уже удалять всю директорию.
но лучше на паскале таким извратом не заниматься, проще замутить это в делфи, на паскале вам постоянно, что бы удалить файл, придется перед этим связывать его с файловой переменно, да и у других функций много всяких заморочек с возвращаемыми структурами и кодами ошибок. код получится огромный и трудный для отладки. в делфи же для каждой функции есть обертки, размер уменьшится раза в три, ибо если спуститься ниже мы увидим что это банальные апи с которыми вобще все очень просто.
FindNext - продолжает поиск файлов в заданном каталоге.
Erase - удаляет файл.
Remove - удаляет пустой каталог.
алгоритм такой:
1)находишь первый файл в каталоге с помощъю FindFirst,одним из возвращаемых параметров файла должна быть структура о которой вы можете много прочесть в интернетах или документации к компилятору.
2)передаете эту структуру функции FindNext,которая будет вызываться в цикле с условием While DosError = 0,пока DosError не равен нулю, значит файлы есть в каталоге и их надо оттуда удалять.
3)удаляем файл с помощъю Erase,если он был найден.
4)после того как в DosError запишется чтот окроме нуля, можно уже удалять всю директорию.
но лучше на паскале таким извратом не заниматься, проще замутить это в делфи, на паскале вам постоянно, что бы удалить файл, придется перед этим связывать его с файловой переменно, да и у других функций много всяких заморочек с возвращаемыми структурами и кодами ошибок. код получится огромный и трудный для отладки. в делфи же для каждой функции есть обертки, размер уменьшится раза в три, ибо если спуститься ниже мы увидим что это банальные апи с которыми вобще все очень просто.
Unlocker — программа позволяющая пользователю удалять, перемещать и переименовывать файлы и папки, заблокированные другими системными процессами. http://biblprog.org.ua/ru/unlocker/
rmdir x:\путь
Вот может поможет
Команда по удалению папки с подпапками Вы можете увидеть ниже:
DELTREE [диск: ] путь
Ключи командной строки.
/Y - блокировка выдачи запросов на подтверждение удаления подпапок.
Пример.
Удалить папку E:\ALL\TEXTFILE со всем её содержимым.
C:\ DOC > DELTREE E:\ALL\TEXTFILE
Команда по удалению папки с подпапками Вы можете увидеть ниже:
DELTREE [диск: ] путь
Ключи командной строки.
/Y - блокировка выдачи запросов на подтверждение удаления подпапок.
Пример.
Удалить папку E:\ALL\TEXTFILE со всем её содержимым.
C:\ DOC > DELTREE E:\ALL\TEXTFILE
Держи удалит папку вместе с содержимым
var i:string;t1:integer;g:file;d1:string;
begin
d1:='C:\Users\admin\Desktop\NFS';
for t1:=1 to 999 do begin
foreach var gf in EnumerateFiles(d1, '*')do begin
Assign(g, gf);
Erase(g);
end;
end;
i:='C:\Users\admin\Desktop\NFS';
rmdir(i);
end.
var i:string;t1:integer;g:file;d1:string;
begin
d1:='C:\Users\admin\Desktop\NFS';
for t1:=1 to 999 do begin
foreach var gf in EnumerateFiles(d1, '*')do begin
Assign(g, gf);
Erase(g);
end;
end;
i:='C:\Users\admin\Desktop\NFS';
rmdir(i);
end.
Это для Делфи, но с очень маленьким напильником пойдет на чистом паскале.
procedure RemoveDir(path: string);
var
sr: TSearchRec;
begin
if FindFirst(path + '\*.*', faAnyFile, sr) = 0 then
repeat
if (((sr.Name='.') or (sr.Name='..'))=false) then
if sr.Attr=faDirectory then RemoveDir(path + '\' + sr.name)
else DeleteFile(path + '\' + sr.name)
until FindNext(sr) <> 0;
FindClose(sr);
RemoveDirectory(PChar(path));
end;
procedure RemoveDir(path: string);
var
sr: TSearchRec;
begin
if FindFirst(path + '\*.*', faAnyFile, sr) = 0 then
repeat
if (((sr.Name='.') or (sr.Name='..'))=false) then
if sr.Attr=faDirectory then RemoveDir(path + '\' + sr.name)
else DeleteFile(path + '\' + sr.name)
until FindNext(sr) <> 0;
FindClose(sr);
RemoveDirectory(PChar(path));
end;
Похожие вопросы
- Помогите пожалуйста удалить папку NOD32.
- Как удалить папку из копьютора ели она не удаляиться?
- ...не показывает скрытые папки и файлы....возможно от вируса....СДЕЛАТЬ ЧЕРЕЗ РЕЕСТАР...
- Здравствуйте! Срочно нужна помощь! Удалила папку с фотографиями, и с корзины тоже. Можно ли как нибудь восстановить?
- случайно удалил папку с фотографиями, с помощью какой програмки можно вернуть обратно
- А можно удалить папку system32. Если нет что из нее можно удалять?
- Вопросик по Pascal. Есть переменные A,B,C,D. Как сделать так, чтобы при вводе A выводилось цифра 1, B - 2, C-3, D-4?
- Стоит Windows XP, можно ли поставить пароль на Локальный диск: D\:, или на отдельную папку, если да, то как это сделать?
- Можно ли на argus pod mod установить прошивку от drag s? Можно ли вообще сделать кастомную пришивку на устройства вупу
- как на JavaScript или вообще сделать так чтобы в тексте(слове) одна буква была другого цвета?