Форум: "KOL";
Текущий архив: 2013.11.24;
Скачать: [xml.tar.bz2];
ВнизРабота с ассоциациями файлов Найти похожие ветки
← →
MTsv DN (2009-07-31 10:04) [0]Всем привет...
Нашел один очень интересный момент. Естесссна про FileIconSystemIdx и FileIconSysIdxOffline я знаю, однако при открытии каталога с большим числом файлов производительность падает. Поэтому я стал использовать двусвязный список Extension <-> IconIdx. Что позволяет при работе программы сильно выиграть по времени. Но и тут меня не все устоило, поскольку при каждом запуске программы приходится сканировать реестр по расширению и заполнять список. Здесь я решил, только один раз (самый первый запуск) получать необходимые данные и сохранять их в файл и при последующих запусках просто читать данные из файла.
Это предистория, однако появились очень интересные грабли:S := NewReadFileStream("files_assocs.bin");
ass := S.ReadStr;
while ass <> "" do
begin
Ext := KOLString(Parse(ass, "|"));
Ic_Ext.Add({$IFDEF UNICODE_CTRLS}WAnsiLowerCase{$ELSE}AnsiLowerCase{$ENDIF}(Ext));
Ic_Idx.Add(KOLString(ass));
FileIconSysIdxOffline(Ext);
ass := S.ReadStr;
end;
S.Free;
Если выделенную строчку закомментировать, то иконки файлов не отображаются!!! Хотя в принципе этот вызов - "пустышка"!!!
Почему так выходит?
Полный проект здесь: http://slil.ru/27872306
P.S. Для тестов изменить путь. У меня "D:\1\"
← →
Vladimir Kladov © (2009-07-31 20:38) [1]Это скорее всего потому, что системный список иконок - это кэш, и он динамический. В нем не появляются иконки сами собой, требуется, чтобы какая-то программа (например, explorer) затребовала соответствующие ассоциации. Если не затребовать, то по этим позициям ничего не будет.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2013.11.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c