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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2012, 15:35   #1
AlexKhol
Пользователь
 
Регистрация: 04.02.2012
Сообщений: 15
По умолчанию Рекурсивный поиск файлов в интервале дат(без времени,только день,месяц и год))

Добрый день! Уже долго ломаю голову над тем как сделать поиск файлов в интервале дат. Вот что получилось:

Код:
procedure GetAllFiles(mask: string;List:TLIstBox;date:Tdatetimepicker;date2:Tdatetimepicker;status:TstatusBar);
var
  search: TSearchRec;
  directory: string;
  i:integer;

begin

  directory := ExtractFilePath(mask);

  // find all files
  for i := 1 to list.count do
   begin
   mask:=directory+List.Items[i-1];


  if FindFirst(mask, $23, search) = 0 then
  begin
    repeat
      // add the files to the listbox

        begin

            if(FileDateToDateTime(search.Time)>=date.Date)
and(FileDateToDateTime(search.Time)<=date2.Date)  then      begin
                    status.SimpleText:='Копирование:'+directory + search.Name;
form10.ListBox1.Items.Add(directory + search.Name);

      Inc(Count);

                    end;
       end;
    until FindNext(search) <> 0;

  end;

   end;
  // Subdirectories/ Unterverzeichnisse
  if FindFirst(directory + '*.*', faDirectory, search) = 0 then
  begin
    repeat
      if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
        GetAllFiles(directory + search.Name + '\' + ExtractFileName(mask),list,date,date2,status);
    until FindNext(search) <> 0;
    FindClose(search);
  end;
end;
Но поиск происходит не правильно,все дело в том ,что сравнение Time с DateTimePicker.DateTime происходит не только по дате,но и по времени.Подскажите как сделать поиск только по дате,без времени?


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

Последний раз редактировалось Serge_Bliznykov; 04.02.2012 в 16:01.
AlexKhol вне форума Ответить с цитированием
Старый 04.02.2012, 15:56   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Один из вариантов из DateTime получить DateTime с отсечением времени
Код:
var xYear,xMonth,xDay: Word;
...
  DecodeDate(xDate1,xYear,xMonth,xDay);
  xDate2:=EncodeDate(xYear,xMonth,xDay);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2012, 16:00   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

tip. функция trunc() применённая к аргументу типа TDateTime возвращает целое число - это и будет дата (без временной составляющей).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.02.2012, 16:15   #4
AlexKhol
Пользователь
 
Регистрация: 04.02.2012
Сообщений: 15
По умолчанию

Serge_Bliznykov,спасибо,работает))
AlexKhol вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
День месяц и год. Задача. Nihith Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 09.03.2011 21:12
как из ячейки с датой выразить день, месяц, год мария2507 Microsoft Office Excel 3 23.03.2010 15:10
отдельно день месяц и год kate158 Общие вопросы Delphi 6 25.08.2009 09:28
Как из TDBDateTimeEditEh получить отдельно день, месяц и год? HIC БД в Delphi 2 31.10.2008 17:24
Разделить дату на год,месяц, день Avalonix Общие вопросы Delphi 11 28.05.2008 09:56