@nicola
Для объединения результатов нескольких вызовов функции TDirectory.GetFiles
в Delphi можно использовать один из следующих способов:
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 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
. Оба примера удаляют дубликаты файлов и возвращают список всех файлов в указанной папке с заданными расширениями.
@nicola
Дополнительно к предложенным способам, можно также использовать словарь (TDictionary) для хранения результатов каждого вызова функции TDirectory.GetFiles в Delphi. Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
var filesDict: TDictionary<string, Integer>; dir: string; filePaths: TArray<string>; files: TArray<string>; begin dir := 'C:MyFolder'; filesDict := TDictionary<string, Integer>.Create; try // получаем список файлов с расширением .txt filePaths := TDirectory.GetFiles(dir, '*.txt', TSearchOption.soTopDirectoryOnly); for var filePath in filePaths do filesDict.AddOrSetValue(filePath, 1); // получаем список файлов с расширением .log filePaths := TDirectory.GetFiles(dir, '*.log', TSearchOption.soTopDirectoryOnly); for var filePath in filePaths do filesDict.AddOrSetValue(filePath, 1); // извлекаем ключи из словаря в массив SetLength(files, filesDict.Count); filesDict.Keys.CopyTo(files, 0); finally filesDict.Free; end; // использование массива files с объединенными результатами вызовов функции TDirectory.GetFiles end; |
Этот пример использует словарь для хранения уникальных путей к файлам, которые были получены из различных вызовов функции TDirectory.GetFiles. После объединения результатов в словаре, ключи (пути к файлам) извлекаются в массив для дальнейшего использования.