Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1

Удаление папок

28.03.2012, 12:10. Показов 2460. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <vcl.h>
#include "dstring.h"
#pragma hdrstop
 
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
bool DeleteDir(AnsiString DirName);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        AnsiString DirPath = Edit1->Text;
 
        TStringList* ToDel = new TStringList();
        ToDel->LoadFromFile("Spisok.txt");
        AnsiString ObjectName;
        for (int i = ToDel ->Count-1; i >= 0; i--)
        {
                ObjectName = DirPath+ToDel->Strings[i];
                if (DirectoryExists)
                {
                  DeleteDir(ObjectName);
                  RemoveDir (ObjectName);
                }else
                (FileExists);
                DeleteFile (ObjectName);
        }
        delete ToDel;
 
}
//---------------------------------------------------------------------------
 
bool DeleteDir(AnsiString DirName)
{
TSearchRec sr;
if (DirName.Length())
 {
   if (!FindFirst(DirName+"\\*.*",faAnyFile,sr))
   do
   {
      if (!(sr.Name=="." || sr.Name==".."))
      if (((sr.Attr & faDirectory) == faDirectory ) || (sr.Attr == faDirectory))
      {
         FileSetAttr(DirName+"\\"+sr.Name, faDirectory );
         DeleteDir(DirName+"\\"+sr.Name);
         RemoveDir(DirName + "\\"+sr.Name);
      }
      else
      {
         FileSetAttr(DirName+"\\"+sr.Name, 0);
         DeleteFile(DirName+"\\"+sr.Name);
      }
   }
   while (!FindNext(sr));
   FindClose(sr);
   }
   RemoveDir(DirName);
   return true;
}
Диск в формате таком J://

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
bool DeleteDir(AnsiString DirName)
{
TSearchRec sr;
if (DirName.Length())
 {
   if (!FindFirst(DirName+"\\*.*",faAnyFile,sr))
   do
   {
      if (!(sr.Name=="." || sr.Name==".."))
      if (((sr.Attr & faDirectory) == faDirectory ) || (sr.Attr == faDirectory))
      {
         FileSetAttr(DirName+"\\"+sr.Name, faDirectory );
         DeleteDir(DirName+"\\"+sr.Name);
         RemoveDir(DirName + "\\"+sr.Name);
      }
      else
      {
         FileSetAttr(DirName+"\\"+sr.Name, 0);
         DeleteFile(DirName+"\\"+sr.Name);
      }
   }
   while (!FindNext(sr));
   FindClose(sr);
   }
   RemoveDir(DirName);
   return true;
При использование этой функции у меня удаляет все под чистую )т.е не по списку, а без неё не удаляет папки в которых есть файлы , только пустые но по списку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.03.2012, 12:10
Ответы с готовыми решениями:

Удаление папок оптом
String Dir1 = &quot;1&quot;; String Dir2 = &quot;2&quot;; if(DirectoryExists(Dir1)) if(DirectoryExists(Dir2)) { TCHAR cDest = {0}; ...

Удаление папок с неявно заданым именем
Использую код для удаления папок bool DeleteDir(AnsiString DirName) //ôóíêöèÿ óäàëåíèÿ ïàïîê { TSearchRec sr; if...

Удаление нескольких папок пользователя при нажатии кнопки
Доброго времени суток господа!! помогите пожалуйста в начинаниях!! Как удалить подпапку в папке пользователя!! void __fastcall...

7
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
28.03.2012, 12:19
Цитата Сообщение от EdarGp Посмотреть сообщение
При использование этой функции у меня удаляет все под чистую )т.е не по списку, а без неё не удаляет папки в которых есть файлы , только пустые но по списку.
Можно подробнее? Желательно с примером. Не буду говорить за других, но я не понял, что требуется

Добавлено через 2 минуты
Цитата Сообщение от EdarGp Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
ObjectName = DirPath+ToDel->Strings[i];
 if (DirectoryExists)
 {
 DeleteDir(ObjectName);
 RemoveDir (ObjectName);
 }else
 (FileExists);
 DeleteFile (ObjectName);
Или мне нужно много кофе или объясните вот эту конструкцию
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
28.03.2012, 12:42  [ТС]
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
Можно подробнее? Желательно с примером. Не буду говорить за других, но я не понял, что требуется

Добавлено через 2 минуты

Или мне нужно много кофе или объясните вот эту конструкцию
В файле spisok.txt (находятся файлы и папки которые нужно удалить)
11

Пример
11/
12/
11.mp3


C++
1
2
3
4
5
6
7
8
ObjectName = DirPath+ToDel->Strings[i];//(Берётся первая строка из spisok.txt)
 if (DirectoryExists) //(если это папка)
 {
 DeleteDir(ObjectName);//(то удаляем её содержимое)
 RemoveDir (ObjectName);//(и её саму)
 }else //иначе
 (FileExists);// это файл
 DeleteFile (ObjectName);//удаляем его
0.rar

Но я нашел ошибку, если в файле(spisok.txt) есть пустые строчки, тогда удаляет все полностью)
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
28.03.2012, 13:32  [ТС]
Не подскажите как мне сделать отчет по моему коду
такого типа
C++
1
2
dt = Now();// формат даты
memo->Lines->Add(DateToStr(dt) +" " + TimeToStr(dt) +" " + " - "+"Удален ярлык : "+Path+sear.Name+", размер: " +IntToStr(sear.Size)+" байт");
А для моего кода удаления папок не получается...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.03.2012, 15:10
DeleteDir
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
bool DeleteDir(AnsiString DirName)
{
TSearchRec sr;
if (DirName.Length())
 {
 if (!FindFirst(DirName+"\\*.*",faAnyFile,sr))
 do
  {
  if (!(sr.Name=="." || sr.Name==".."))// это удалять не надо
   if (((sr.Attr & faDirectory) == faDirectory ) ||
   (sr.Attr == faDirectory))// найдена папка
    {
    FileSetAttr(DirName+"\\"+sr.Name, faDirectory );// сброс всяких read-only
    DeleteDir(DirName+"\\"+sr.Name);//рекурсивно удаляем содержимое
    RemoveDir(DirName + "\\"+sr.Name);// удаляем теперь уже пустую папку
    }
    else// иначе найден файл
    {
    FileSetAttr(DirName+"\\"+sr.Name, 0);// сброс всяких read-only
    DeleteFile(DirName+"\\"+sr.Name);// удаляем файл
    }
  }
 while (!FindNext(sr));// ищем опять, пока не найдем все
 FindClose(sr);
 }
RemoveDir(DirName);
return true;
}
У меня вроде нормально работает, не пойму что не устраивает.Возвращение значения не доведено до ума только
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
30.03.2012, 11:44  [ТС]
Avazart, да я и использую DeleteDir только вот отчет не получается...
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
30.03.2012, 12:05
Добавьте добавление названия в файла в ListBox, Memo и т.п. при удалении файла, в чем проблема то?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
10.04.2012, 13:40  [ТС]
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
Добавьте добавление названия в файла в ListBox, Memo и т.п. при удалении файла, в чем проблема то?
Всмысле?
Тут идет удаление папки а не файла.
И ещё один вопрос
Создаем запрещенную папку con

Например:
mkdir \\.\путь:\con
Чтобы удалить папку, потребуется также обратиться к командной строке:
rmdir \\.\путь\con
Как это все сделать в buildere где
путь ->Edit1->Text;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2012, 13:40
Помогаю со студенческими работами здесь

Поиск и удаление пустых папок, а также все вложенные пустые папки
Прошу люди гении, подскажите мне код на С++ для этой задачки. Я буду очень рад и благодарен вам.

Удаление папок
Здравствуйте. Как можно вызвать, что бы в определённой папке, удалились все папки с в их вложенными файлами, при этом, запретить удаление...

Удаление папок
нужен скрипт чтобы удалить все папки с именами, начинающимися с temp, вместе с содержимым (сделать префикс параметром) помогите...

Удаление папок от 1 до 10
Есть 10 папок с названиями 1..2..3.Как их удалить програмно?

Удаление папок
Нужно удалить сразу несколько папок с файлами. Наткнулся на следующий код, но директории не удаляются. import os import shutil ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru