Может есть возможность использования для хранения данных не файл, а базу данных, тогда все просто - запрос на поиск повторяющихся значений. Если нет такой возможности, то на вскидку:
- считываешь файл в массив;
- Начинаешь проверку строк функцией StrComp, что-то вроде:
For i = 0 To UBound(MyArr) For j = i + 1 To UBound(MyArr) If StrComp(MyArr(i), MyArr(j)) = 0 Then MyArr(j) ="" Next j Next i
-Перезаписываешь файл из массива, по условию MyArr(i)<>"";
Сложность получается n^2. Может попробовать отсортировать массив (как-нибудь побыстрее), а потом добавлять в файл по очереди, если текущая запись не равна предыдущей?
Вообще, имеет ли значение порядок строк в файле? А большые файлы?
Второй вариант зависит от алгоритма сортировки и, по-моему, вполне способен конкурировать с первым.
Например, можно использовать возможности коллекций (там, понимаете, алгоритмы сортировки и поиска хорошие): создаём пустую коллекцию; по мере чтения из исходного файла добавляем в неё элементы с соответствующими ключами, например, так: colItems.Add sItem, sItem. Если возникает исключение, значит, добавляемая строчка уже в коллекции имеется; игнорируем её. Если исключения не возникает, добавляем в конечный файл строчку, содержащую sItem. Правда, такой метод накладывает ограничения на возможные символы, входящие в строку. Некоторые из них, впрочем, можно обойти, добавляя элементы с ключом, например, ("s" & sItem).
Почему же? Если воспользоваться Быстрыми методами сортировки. Пирамидальной или Хоара, собственно. Если мне не изменяет память сложность их n*log(n). Плюс один раз пробежаться по массиву, после сортировки: n*(log(n)+1). На больших последовательностях (да, даже и не на очень больших), сложность будет меньше квадратичной.
Другой вопрос в том, что если последовательность слишком большая, держать в памяти весь массив не серьезно. Можно что-нибудь хэш-таблицы использовать, наверное. Или отсортировать файл предварительно...
И в противном случае тоже, если файл не слишком большой, то не важно, чем пользоваться. 1000 элементов без разницы чем сортировать: пузырьком или Хоаром...