![]() |
|
#1
|
||||
|
||||
![]() Всем добрый день!
Подскажите, как можно реализовать поиск в нужном каталоге последнего созданного файла? Имя файла не известно, только расширение (*.xls ) |
#2
|
||||
|
||||
![]() Попробуй так:
Код:
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; ![]() |
#3
|
||||
|
||||
![]() Большое спасибо!
![]() |
#4
|
||||
|
||||
![]() А еще вопросик по этой теме...
Этот вариант когда после изменения содержимого одного из более поздних файлов в этом каталоге, он становиться последним измененным и при следующем поиске находит именно его(измененный), а не последний созданный... А как сделать, чтобы искал именно последний созданный файл, а не измененный... Дело в том, что в каталоге хранятся файлы, которые периодически дополняют... А мне нужен именно последний созданный... ![]() |
#5
|
|||
|
|||
![]() тогда пользуй функцию GetFileTime.
Она умеет возвращать именно дату создания. Только файл придется открыть - GetFileTime требует Handle файла. |
#6
|
||||
|
||||
![]() Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
|||
|
|||
![]() На сколько я знаю, это единственный способ получить дату создания файла. Все остальные функции обращаются именно к этой. Вариант хранения списка тоже может прокатить. Но использование GetFileTime не так уж и нагружает систему, так что можно спокойно пользоваться ею.
|
#8
|
||||
|
||||
![]() Как я понял автора интересует на самом деле не столько факт нового файла по дате, а факт нового файла в списке. Ведь возможна ситуация, когда файл был создан в другом каталоге с датой более старой, а затем скопирован в рабочий каталог. Тогда естественно алгоритм поиска нового файла по дате даст сбой.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
||||
|
||||
![]() Благодарю за ответы, а если использовать функцию GetFileTime, будет необходимо открывать,проверять каждый файл? хм.. или я поняла не правильно?
А если файлов много... и они прибавляються каждый день по несколько штук... ? |
#10
|
||||
|
||||
![]() Насколько я в курсе, GetFileTime не открывает сам файл, а читает информацию о данном файле из файловой таблицы, т.е. тело самого файла она не трогает, поэтому это никак недолжно влиять на доступ к данному файлу. Скорость чтения очень большая, так-что не переживайте тормозов не будет.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#11
|
||||
|
||||
![]() Огромное спасибо!
буду пробовать ![]() |