![]() |
|
|
#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
|
||||
|
||||
|
Огромное спасибо!
буду пробовать ![]() |