Как объединить результаты нескольких вызовов tdirectory.getfiles в delphi?

Пользователь

от nicola , в категории: Другие , 7 месяцев назад

Как объединить результаты нескольких вызовов tdirectory.getfiles в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от landen.nienow , 7 месяцев назад

@nicola 

Для объединения результатов нескольких вызовов функции TDirectory.GetFiles в Delphi можно использовать один из следующих способов:

  1. Использовать массив динамических строк (TArray<string>) для хранения результатов каждого вызова функции TDirectory.GetFiles, а затем объединить все элементы массивов в один массив с помощью функции TArray.Concat. Пример кода:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
var
  files: TArray<string>;
  dir: string;
begin
  dir := 'C:MyFolder';
  SetLength(files, 0);
  for var filePath in TDirectory.GetFiles(dir, '*.txt', TSearchOption.soTopDirectoryOnly) do
    files := files + [filePath];
  for var filePath in TDirectory.GetFiles(dir, '*.log', TSearchOption.soTopDirectoryOnly) do
    files := files + [filePath];
  // объединяем все элементы массивов в один массив
  files := TArray.Concat<string>(files1, files2);
end;


  1. Использовать объект TStringList для хранения результатов каждого вызова функции TDirectory.GetFiles, а затем объединить все элементы списков в один список с помощью метода TStrings.AddStrings. Пример кода:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
var
  files: TStringList;
  dir: string;
begin
  dir := 'C:MyFolder';
  files := TStringList.Create;
  try
    // получаем список файлов с расширением .txt
    files.AddStrings(TDirectory.GetFiles(dir, '*.txt', TSearchOption.soTopDirectoryOnly));
    // получаем список файлов с расширением .log
    files.AddStrings(TDirectory.GetFiles(dir, '*.log', TSearchOption.soTopDirectoryOnly));
    // объединяем все элементы списков в один список
    files.Sorted := True;
    files.Duplicates := TDuplicates.dupIgnore; // удаляем дубликаты
  finally
    files.Free;
  end;
end;


Оба примера объединяют результаты вызовов функции TDirectory.GetFiles для файлов с расширениями .txt и .log в папке C:MyFolder. Первый пример использует массив динамических строк для хранения результатов, а второй - объект TStringList. Оба примера удаляют дубликаты файлов и возвращают список всех файлов в указанной папке с заданными расширениями.