Найти дубликаты файлов, выбранные в FileDialog - PullRequest
0 голосов
/ 26 мая 2019

Я создаю функцию, которая находит дубликаты файлов, выбранных с помощью FileDialog , вот что я сделал:

Поскольку Collection FileDialogSelectedItems доступен только для чтения, япоиск функции, чтобы получить хеш и преобразовать коллекцию в Array

Dim FilesArray(), ArraySHA(), FilteredArray() as String 
set fdg = Application.FileDialog(3)

With fdg
.....
If .show = -1 then
   ReDim ArraySHA(fdg.SelectedItems.Count)
   For i = 1 to fdg.SelectedItems.Count
      ArraySHA(i) = FileToSHA256(fdg.SelectedItems.Item(i)) '' New array with hashes
   Next i

Затем я использовал другую функцию для фильтрации дубликатов в ArraySHA

   FilteredArray = FilterWords(ArraySHA)

Теперь у меня есть массив с уникальными хэшами, но мне нужно иметь selectedItems (filepaths), чтобы я мог импортировать их без дубликатов.

Большое спасибо


Редактировать : я создал словарь на основе коллекции SelectedItems, добавляя каждый элемент, только если его там еще нет

    For i = 1 To fdg.SelectedItems.Count
        SHA = FileToSHA256(fdg.SelectedItems.Item(i))
        If Not dict.Exists(SHA) Then
                dict.Add SHA, fdg.SelectedItems.Item(i)
        End if
    Next i

Теперь у меня есть хэши, которые соответствуют только одному файлу, который является его ключомзначение

   For Each key In dict.keys
        UniqueValue = dict(key)
        '
        'do something with each unique value (which is the filepath)
        '
   Next key

1 Ответ

1 голос
/ 26 мая 2019

Я создал словарь на основе коллекции SelectedItems, добавляя каждый элемент, только если его там еще нет

    For i = 1 To fdg.SelectedItems.Count
        SHA = FileToSHA256(fdg.SelectedItems.Item(i))
        If Not dict.Exists(SHA) Then
                dict.Add SHA, fdg.SelectedItems.Item(i)
        End if
    Next i

Теперь у меня есть хэши, которые соответствуют только одному файлу, значение его ключа

   For Each key In dict.keys
        UniqueValue = dict(key)
        '
        'do something with each unique value (which is the filepath)
        '
   Next key
...