Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2012, 12:16   #1
terpyohok
 
Регистрация: 02.01.2011
Сообщений: 2
По умолчанию Узнать имя папки

Здраствуйте. Такая задача. Одна программа при каждом запуске создает папку на диске D:/ в формате дд-мм-гггг. Как узнать название последней созданной папки и записать его в переменную например? Думаю наиболее подходящим вариантом будет папка с самой последней датой создания. но как это реализовать?
terpyohok вне форума Ответить с цитированием
Старый 06.11.2012, 12:50   #2
ttp
 
Регистрация: 05.11.2012
Сообщений: 3
По умолчанию

вот функция поиска папки с последней датой
Код:
function TForm1.search(path: string): String; ////////////
var //////////////////////////////////////////////////////
  seek: TSearchRec;
  i,max: Integer;
  datestamp: array[0..50] of TDateTime;
   fd: TStringList;
begin
  max := 0;
  if DirectoryExists(path) then  //dir exists?
  begin
  fd := TStringList.Create;
  if FindFirst(path + '\*.*', faDirectory, seek) = 0 then//search
  begin                                                  ////////
    repeat                                               ////////
      if (seek.Attr and faDirectory) <> 0 then //search only dir/
        if (seek.Name <> '.') and (seek.Name <> '..') then//exclude system dir's
          fd.Add(seek.Name);                             //
    until FindNext(seek) <> 0;                           ///
    FindClose(seek);                                     //close search
    Application.ProcessMessages;// if windows high load
    DateSeparator:='.';// date format to '.' (01.01.2012)

    for i := 0 to fd.Count - 1 do          //= search max date
  begin                                    //=
    datestamp[i]:=StrToDate(fd[i]);        //=
    if datestamp[i] > datestamp[max] then  //=
      max := i;                            //=
      end;
      fd.Free;
  Result :=DateToStr(datestamp[max]);//result str up to date
  end
  else Result:='';// on error dir or another error
  end; ///////////////////////////////////////////////////
end;//////////////////////////////////////////////////


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 06.11.2012 в 12:52.
ttp вне форума Ответить с цитированием
Старый 06.11.2012, 12:51   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

через FindFirst / FindNext легко получить все папки.
Проверить папку на соответствие маске и найти с максимальной датой в имени - это уже дело техники.
Направление я дал, дальше самостоятельно справитесь?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.11.2012, 12:52   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Поиск по форуму FindFirst FindNext в разделах по дельфи изучите - авось натолкнёт на мысли. Сделаете по аналогии заготовку и если работать не будет - сюда напишете, подсобим довести до ума.
ПС, Млин ) как так, полчаса ответов не было а тут сразу подряд 3 ))
phomm вне форума Ответить с цитированием
Старый 06.11.2012, 13:03   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

оффтоп
Цитата:
Сообщение от phomm
ПС, Млин ) как так, полчаса ответов не было а тут сразу подряд 3 ))
Угу! я, кстати, неоднократно подобные казусы на форуме наблюдал.. Когда одновременно несколько человек дают ответ! Логических объяснений я этому не вижу - чистое стечение обстоятельств — Его Величество Случай!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.11.2012, 13:05   #6
terpyohok
 
Регистрация: 02.01.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
через FindFirst / FindNext легко получить все папки.
Проверить папку на соответствие маске и найти с максимальной датой в имени - это уже дело техники.
Направление я дал, дальше самостоятельно справитесь?
Думаю да, хоть и не особо пока знаю как.,
Все равно спасибо

Кстати, сор за оффтоп но еще вопрос - возможно-ли перехватить файл, который некая программа отправляет с ПК через Bluetooth на печать BT принтеру? Было бы очень интересно увидеть принцип работы сего кода...

Последний раз редактировалось Stilet; 06.11.2012 в 14:11.
terpyohok вне форума Ответить с цитированием
Старый 06.11.2012, 13:10   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
Как узнать название последней созданной папки и записать его в переменную например?
А не проще ли при создании папки записывать куда-нибудь (например, в ini-файл) к ней путь, т.е. каждый раз перезаписывать это значение. Тогда не понадобятся FindFirst - FindNext.
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Случайное имя папки MAO_NET Общие вопросы Delphi 14 23.03.2011 10:20
Узнать имя листа, если известно кодовое имя tae1980 Microsoft Office Excel 3 20.03.2011 21:57
Как узнать путь до папки mt10forex Помощь студентам 5 23.07.2010 20:31
как узнать имя папки? KWNlnc Общие вопросы Delphi 1 14.04.2010 17:45
Выбрать имя папки из директории Македонский Общие вопросы Delphi 15 29.08.2007 10:48