Быстрое чтение имен файлов из каталога

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Быстрое чтение имен файлов из каталога

Сообщение Azazaz » 06.04.2016 21:39:07

В fileutil есть функция загрузки содержимого каталога FindAllFiles которая возвращает TStringList вида:
Путь\Файл0
Путь\Файл1
Путь\Файл2
Путь\Файл3
...

Так вот есть ли иной метод прочитать содержимое так что бы результат не содержал "Путь\"? Мне нужен предельно простой и быстрый метод.
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: Быстрое чтение имен файлов из каталога

Сообщение скалогрыз » 06.04.2016 22:10:15

Azazaz писал(а):Мне нужен предельно простой и быстрый метод.

тогда используй функцию SuperFindAllFiles()!

если не знаешь где её найти, то выглядит она так:
Код: Выделить всё
function SuperFindAllFiles(const SearchPath: String; SearchMask: String = '';
  SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory): TStringList; overload;
var
  i : integer;
  p : integer;
begin
  Result:=FindAllFiles(SearchPAth, SearchMask, SearchSubDirs, DirAttr);
  if Assigned(Result) then begin
    p:=length(IncludeTrailingPathDelimiter(SearchPath))+1;
    for i:=0 to Result.Count-1 do
      Result[i]:=Copy(Result[i], p, maxint);
  end;
end;

Супер быстро! Супер просто!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Быстрое чтение имен файлов из каталога

Сообщение Azazaz » 06.04.2016 23:41:35

Нашел:
Код: Выделить всё
var
  FL: TStringList; SR: TSearchRec;

...

FL:= TStringList.Create;
if FindFirst(Path + DirectorySeparator + '*', faAnyFile, SR)=0 then begin
  repeat FL.Append(SR.Name);
  until FindNext(SR)<>0;
end;
FindClose(SR);
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: Быстрое чтение имен файлов из каталога

Сообщение Azazaz » 13.04.2016 23:35:09

Когда читаешь содержимое каталога через FindFirst, FindNext то первыми файлами всегда идут:
1. "."
2. ".."
Вопросы:
Что за файлы такие?
Подобный метод чтения работает и на других платформах? (кроме Windows)
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: Быстрое чтение имен файлов из каталога

Сообщение Sharfik » 14.04.2016 00:51:49

Почитай про "Относительный и абсолютный путь" в файловых системах.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: Быстрое чтение имен файлов из каталога

Сообщение Azazaz » 14.04.2016 01:40:33

.. – это каталог верхнего уровня. Тут понятно.
. – указатель на то что файл находиться в текущем каталоге?

Я как параметр передаю faAnyFile что как бы исключает возврат указателей на каталоги, почему тогда возвращается ".." (как бы каталог априори)?
Azazaz
новенький
 
Сообщения: 41
Зарегистрирован: 21.04.2015 20:00:03

Re: Быстрое чтение имен файлов из каталога

Сообщение SSerge » 14.04.2016 03:23:05

Azazaz писал(а): как параметр передаю faAnyFile что как бы исключает возврат указателей на каталоги


Каталог внезапно тоже является файлом, так что указание этого параметра ничего не исключает.
Анализ на то, каталог это или нет, должен производиться после того, как запись о файле прочитана. Там же - анализ на расширение, совпадение имени и прочее.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 241

Рейтинг@Mail.ru
cron