Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.04.2009, 08:57
Аватар для Сёна
Сёна Сёна вне форума
Прохожий
 
Регистрация: 02.05.2007
Адрес: Москва
Сообщения: 42
Версия Delphi: 7
Репутация: 10
Вопрос Поиск файла

Всем добрый день!
Подскажите, как можно реализовать поиск в нужном каталоге последнего созданного файла? Имя файла не известно, только расширение (*.xls )
Ответить с цитированием
  #2  
Старый 15.04.2009, 10:28
Аватар для glaZZ
glaZZ glaZZ вне форума
Прохожий
 
Регистрация: 18.11.2008
Сообщения: 26
Репутация: 10
По умолчанию

Попробуй так:
Код:
procedure TForm1.btnSearchClick(Sender: TObject);
var
  SR: TSearchRec;
  iTime: Integer;
  sResultFile: String;
begin
    if FindFirst('путь к директории с файлами' + '*.xls', faAnyFile, SR) = 0 then
    begin
      repeat
        if SR.Time > iTime then
        begin
          iTime := SR.Time;
          sResultFile := SR.Name;
        end;
      until FindNext(SR) <> 0;
      FindClose(SR);
    end;
    ShowMessage(sResultFile);
end;
P.S.: Если нужно получить полный путь к файлу просто добавь имя найденного файла к пути поиска
Ответить с цитированием
  #3  
Старый 15.04.2009, 10:48
Аватар для Сёна
Сёна Сёна вне форума
Прохожий
 
Регистрация: 02.05.2007
Адрес: Москва
Сообщения: 42
Версия Delphi: 7
Репутация: 10
По умолчанию

Большое спасибо!
Ответить с цитированием
  #4  
Старый 17.04.2009, 14:42
Аватар для Сёна
Сёна Сёна вне форума
Прохожий
 
Регистрация: 02.05.2007
Адрес: Москва
Сообщения: 42
Версия Delphi: 7
Репутация: 10
По умолчанию

А еще вопросик по этой теме...
Этот вариант когда после изменения содержимого одного из более поздних файлов в этом каталоге, он становиться последним измененным и при следующем поиске находит именно его(измененный), а не последний созданный...
А как сделать, чтобы искал именно последний созданный файл, а не измененный...
Дело в том, что в каталоге хранятся файлы, которые периодически дополняют... А мне нужен именно последний созданный...
Ответить с цитированием
  #5  
Старый 17.04.2009, 15:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

тогда пользуй функцию GetFileTime.
Она умеет возвращать именно дату создания. Только файл придется открыть - GetFileTime требует Handle файла.
Ответить с цитированием
  #6  
Старый 17.04.2009, 17:29
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от lmikle
тогда пользуй функцию GetFileTime.
Она умеет возвращать именно дату создания. Только файл придется открыть - GetFileTime требует Handle файла.
Это тоже неидеальное решение, скорее всего придется хранить отдельно список файлов интересующего каталога и сравнивать по нему.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 17.04.2009, 17:59
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

На сколько я знаю, это единственный способ получить дату создания файла. Все остальные функции обращаются именно к этой. Вариант хранения списка тоже может прокатить. Но использование GetFileTime не так уж и нагружает систему, так что можно спокойно пользоваться ею.
Ответить с цитированием
  #8  
Старый 17.04.2009, 18:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Как я понял автора интересует на самом деле не столько факт нового файла по дате, а факт нового файла в списке. Ведь возможна ситуация, когда файл был создан в другом каталоге с датой более старой, а затем скопирован в рабочий каталог. Тогда естественно алгоритм поиска нового файла по дате даст сбой.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 22.04.2009, 09:16
Аватар для Сёна
Сёна Сёна вне форума
Прохожий
 
Регистрация: 02.05.2007
Адрес: Москва
Сообщения: 42
Версия Delphi: 7
Репутация: 10
По умолчанию

Благодарю за ответы, а если использовать функцию GetFileTime, будет необходимо открывать,проверять каждый файл? хм.. или я поняла не правильно?
А если файлов много... и они прибавляються каждый день по несколько штук... ?
Ответить с цитированием
  #10  
Старый 22.04.2009, 09:36
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Насколько я в курсе, GetFileTime не открывает сам файл, а читает информацию о данном файле из файловой таблицы, т.е. тело самого файла она не трогает, поэтому это никак недолжно влиять на доступ к данному файлу. Скорость чтения очень большая, так-что не переживайте тормозов не будет.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #11  
Старый 22.04.2009, 10:01
Аватар для Сёна
Сёна Сёна вне форума
Прохожий
 
Регистрация: 02.05.2007
Адрес: Москва
Сообщения: 42
Версия Delphi: 7
Репутация: 10
По умолчанию

Огромное спасибо!
буду пробовать
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025