Проверить какие файлы добавились в каталог
Список TStringList имеет возможность сортировать содержимое.
А для проверки только добавления делаем просто:
TStringList *Files = new TStringList(); // Список текущих файлов
Filed->Duplicates = dupError; // ошибка при дублировании строк
Files->Sort();
//... Далее создаём поиск по "*.*"
int Index = 0;
AnsiString File_Name;
for (Цикл_Поиска)
{
File_Name = ... ;// Имя найденного файла
// Поиск наличия строки в сортированном списке
if (!Files->Find (File_Name, Index))
{
// Если не найдено
News->Add (File_Name);
Files->Add (File_Name);
}
}
Сортированный список от обычного отличается следующими особенностями:
1. Можно использовать метод "Find", осуществляющий бинарного поиска. Index - номер элемента, результат (bool) - наличие элемента
2. Добавление элемента (Add) вставляет элемент в соответствующую позицию сортированного списка.
News - список новых файлов, может использоваться для вывода.
Как я понял, тормоза при ежесекундном чтении тысяч имён файлов из каталога. Есть функция, имени никак не припомню, позволяющая поставить обработчик события появления/удаления файла в данном каталоге. Думаю, она бы подошла. А список файлов можно хранить в каком-нибудь MemoryTable (что, имхо, лучше всего) или в скрытом от глаз пользователя ListView. Как функцию зовут, убей лопатой не помню. Может Green помнит?
Я знаю, сейчас вы будете плакать. Имя функции я вспомнил, дизассемблировав FAR. :D :D :D
А зовут её (точнее, их) FindFirstChangeNotification, FindNextChangeNotification и FindCloseChangeNotification!
http://msdn2.microsoft.com/en-gb/library/aa364417.aspx
http://msdn2.microsoft.com/en-us/library/aa914108.aspx
http://msdn2.microsoft.com/en-gb/library/aa364417.aspx
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/findfirstchangenotification.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/obtaining_directory_change_notifications.asp