Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Удаление самой старой папки - Delphi  [new]
suzuki-bandit
Member

Откуда:
Сообщений: 4
Добрый день уважаемые программисты
Имеется такая задача
Есть 3 папки
как показано на скрине
Данные папки не трудно догадаться созданы соответственно:
2017-12-01
2017-11-24
2017-11-17
Я каждую неделею удалаю самую старую папку
т.е. в эту неделю я удалю 2017-11-17 т.к. она самая старая
как мне программно найти среди папок самую старую и удалить ее
путь к ним скажем такой такой:

C:\папки\ и тут они лежат


Каждую недю создается новая папка
т.е. на след недели будет папка 2017-12-08 и самой старой уже будет 2017-11-24

К сообщению приложен файл. Размер - 50Kb
4 дек 17, 09:51    [21003172]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2422
удаляй
кто ж тебе мешает
вопрос то какой?
4 дек 17, 10:05    [21003208]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
rgreat
Member

Откуда:
Сообщений: 3746
Просто отсортируй строки.

Например через TStringList.Sort.
4 дек 17, 10:06    [21003210]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
чччД
Guest
suzuki-bandit,

не слушай этих лентяев. Пузырьком сортируй.
4 дек 17, 10:12    [21003219]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
suzuki-bandit
Member

Откуда:
Сообщений: 4
Пример имеется??
4 дек 17, 10:37    [21003322]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2091
Господа, мне нужно сложить 2+2. Киньте пример, пожалуйста.
4 дек 17, 10:39    [21003332]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2091
К слову - лучше делать на Power Shell. Delphi тут зачем? Bat вроде бы так не может, а то бы и им.
4 дек 17, 10:41    [21003347]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Glays
Member

Откуда:
Сообщений: 2345
suzuki-bandit, не благодари
4 дек 17, 11:31    [21003584]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
suzuki-bandit
Member

Откуда:
Сообщений: 4
Спасибо, помогли товарищи
4 дек 17, 11:49    [21003683]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
alekcvp
Member

Откуда:
Сообщений: 522
makhaon
К слову - лучше делать на Power Shell. Delphi тут зачем? Bat вроде бы так не может, а то бы и им.

Да неужто?

dir /b | sort    - по имени
dir /b | sort /r - по имени (в обратном порядке)
dir /b /od - по дате (старые сверху)
dir /b /o-d - по дате (новые сверху)
4 дек 17, 11:50    [21003691]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2091
alekcvp,

и?
4 дек 17, 11:53    [21003698]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
alekcvp
Member

Откуда:
Сообщений: 522
makhaon
alekcvp,
и?

Ну вдруг вам пригодится, раз вы не знали :)
4 дек 17, 11:55    [21003707]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2091
что мне поможет - дело десятое, задачу решить как поможет? :)
4 дек 17, 12:19    [21003857]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
s62
Member

Откуда: Жуковский
Сообщений: 717
suzuki-bandit,

Тебе нужно
- найти список папок в заданной папке.
- Определить дату создания каждой из этих папок и найти самую раннюю дату
- удалить эту папку.
По поводу дат советую почитать о формате дат и времени в Дельфи.
Для работы с папками и файлами в более новых версиях Дельфи есть удобные классы. Для директории вот:
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.IOUtils.TDirectory
С его помощью можно решить все 3 задачи, кроме определения самой ранней даты. Найти самую раннюю придется самостоятельно. Можно это сделать, просто перебрав все директории по очереди.
4 дек 17, 12:24    [21003890]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
s62
Определить дату создания каждой из этих папок и найти самую раннюю дату
Да у него же в названии дата, что хорошо.
4 дек 17, 13:14    [21004126]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
suzuki-bandit
Member

Откуда:
Сообщений: 4
s62
suzuki-bandit,

Тебе нужно
- найти список папок в заданной папке.
- Определить дату создания каждой из этих папок и найти самую раннюю дату
- удалить эту папку.
По поводу дат советую почитать о формате дат и времени в Дельфи.
Для работы с папками и файлами в более новых версиях Дельфи есть удобные классы. Для директории вот:
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.IOUtils.TDirectory
С его помощью можно решить все 3 задачи, кроме определения самой ранней даты. Найти самую раннюю придется самостоятельно. Можно это сделать, просто перебрав все директории по очереди.

Как найти списмок папок в заданной папке???
4 дек 17, 14:03    [21004330]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
чччД
Guest
suzuki-bandit,


Здесь
4 дек 17, 14:10    [21004347]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 720
suzuki-bandit,

нужна визуальная программа ?
ос виндовс ?
4 дек 17, 14:12    [21004356]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 720
Открываешь папку в проводнике > для сортировки кликаешь по колонке Имя > удаляешь последнюю в списке папку
4 дек 17, 14:16    [21004373]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 720
кстати, в программе на скрине нет сортировки по колонке Name ?
4 дек 17, 14:20    [21004385]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2422
удалять самую старую папку по имени - это феерично
а завтра поменяешь алгоритм формирования имени и что?
4 дек 17, 14:27    [21004415]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 720
считаешь, что надежнее по дате создания папки ?

а если, к примеру, эти папки ему по ФТП в хранилище приходят в один день, то и дата создания будет одна.
какую тогда удалим?

так что, тут самый надежный способ по имени.
алгоритм формирования имени правильный и не надо менять
4 дек 17, 14:40    [21004466]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2422
Ghost Writer
считаешь, что надежнее по дате создания папки ?

а если, к примеру, эти папки ему по ФТП в хранилище приходят в один день, то и дата создания будет одна.
какую тогда удалим?

так что, тут самый надежный способ по имени.
алгоритм формирования имени правильный и не надо менять


задача поставлена явно - удалить самую старую
тут делов на минуту - цикл FindFirst и все
не, давайте парсить имя!
которое наверняка уже и получено этим FindFirst и время там есть
ну удачи
4 дек 17, 14:46    [21004492]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
LSV
Member

Откуда: Киев
Сообщений: 30150
А если ппака единственная ? Удалить ? :)
4 дек 17, 14:50    [21004510]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2422
LSV
А если ппака единственная ? Удалить ? :)


не читатель?
есть 3 папки
4 дек 17, 14:52    [21004513]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
чччД
Guest
Какая хорошая тема для муслякивания.

Давайте ее в "Новости Дельфи" попросим перенести?
4 дек 17, 14:53    [21004521]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 720
Tactical Nuclear Penguin,

парсить имя еще никто не предлагал, ты первый
4 дек 17, 14:56    [21004526]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2422
Ghost Writer
Tactical Nuclear Penguin,

парсить имя еще никто не предлагал, ты первый



это где я такое предлагал?
предлагали другие тут - сортировку - а это опирается на разбор имени файла - parse по английски
4 дек 17, 15:01    [21004545]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Tactical Nuclear Penguin
удалять самую старую папку по имени - это феерично
а завтра поменяешь алгоритм формирования имени и что?
Алгоритм формирования имени поменять может только идиот. Это я даже не знаю, с чем сравнить. Взял, и поменял для борща ингредиенты - вместо помидоров огурцы положил.

А вот дата создания самой старой папки может оказаться не самой старой по ряду штатных случаев.
4 дек 17, 15:06    [21004566]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
YuRock
Взял, и поменял для борща ингредиенты - вместо помидоров огурцы положил
О, придумал лучшее сравнение.
Взял, и в бензиновый двигатель начал солярку заливать.
4 дек 17, 15:09    [21004578]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2422
YuRock
Tactical Nuclear Penguin
удалять самую старую папку по имени - это феерично
а завтра поменяешь алгоритм формирования имени и что?
Алгоритм формирования имени поменять может только идиот. Это я даже не знаю, с чем сравнить. Взял, и поменял для борща ингредиенты - вместо помидоров огурцы положил.

А вот дата создания самой старой папки может оказаться не самой старой по ряду штатных случаев.


ты не поверишь как много бывает идиотов
в том числе, если получив задание удалить самую старую папку программист начнет анализировать ее имя - он будет уволен в тот же день наверно по причине идиотизма
4 дек 17, 15:15    [21004604]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
s62
Member

Откуда: Жуковский
Сообщений: 717
suzuki-bandit
Как найти списмок папок в заданной папке???

Я тебе дал ссылку на справку о классе TDirectory. Смотри, какие у него методы и свойства.
4 дек 17, 15:29    [21004648]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Жытель Гондураса
Member

Откуда:
Сообщений: 91
Круто было бы всю папку с дельфями удалить
4 дек 17, 16:05    [21004831]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
schi
Member

Откуда: Москва
Сообщений: 2357
format /u и никаких мучений выбора...
4 дек 17, 16:12    [21004851]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2468
Tactical Nuclear Penguin
в том числе, если получив задание удалить самую старую папку программист начнет анализировать ее имя - он будет уволен в тот же день наверно по причине идиотизма

Смотря что понимать под "старая".
Если я сделал две папки - 170105 и 170106, то для меня "старой" будет всегда 170105, и мне пофиг на всё остальное. Я так придумал, значит так и есть.
4 дек 17, 17:07    [21005044]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
alekcvp
Member

Откуда:
Сообщений: 522
Tactical Nuclear Penguin
YuRock
пропущено...
Алгоритм формирования имени поменять может только идиот. Это я даже не знаю, с чем сравнить. Взял, и поменял для борща ингредиенты - вместо помидоров огурцы положил.

А вот дата создания самой старой папки может оказаться не самой старой по ряду штатных случаев.


ты не поверишь как много бывает идиотов
в том числе, если получив задание удалить самую старую папку программист начнет анализировать ее имя - он будет уволен в тот же день наверно по причине идиотизма

Правильно! Поэтому надо завести каталог в xml, где писать папки и даты до которых они остаются актуальными, потом по списку удалять просроченное :)
4 дек 17, 21:19    [21005587]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 720
alekcvp,

а почему в xml ?

вот еще веселый вариант: сразу в планировщике создавать задание на удаление файла через неделю. и не важно какое имя у него.
4 дек 17, 21:44    [21005635]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
alekcvp
Member

Откуда:
Сообщений: 522
Ghost Writer
alekcvp,
а почему в xml ?

Потому что модно и молодёжно! Или вы предлагаете JSON? :)
4 дек 17, 22:37    [21005725]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 720
я думаю, БД тут будет в самый раз. Желательно в облаке. Или простой текстовый файл.
4 дек 17, 22:52    [21005747]     Ответить | Цитировать Сообщить модератору
 Re: Удаление самой старой папки - Delphi  [new]
Dmitri Krizhanovski
Member

Откуда:
Сообщений: 468
uses
  System.IOUtils, System.Types, System.Generics.Collections;

procedure DeleteOldDirectory(ARootFolder: string);
var
  Directories: TStringDynArray;
begin
  {получить список}
  Directories := TDirectory.GetDirectories(ARootFolder);

  {сортировать }
  TArray.Sort<string>(Directories);

  {удалить первую в списке папку}
  if Length(Directories) > 0 then
    TDirectory.Delete(Directories[0]);
end;

p.s. Знаю, знаю...
5 дек 17, 01:49    [21005917]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить