Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2020, 01:45   #1
FunnyK12
Новичок
Джуниор
 
Регистрация: 30.05.2020
Сообщений: 1
По умолчанию ListView, иконки, два потока

Доброго времени суток.
Так так иконки довольно долго извлекаются из файлов, то, если, предположим, на форме изменить путь к папке (пример: текущая Windows -> system32) лично у меня проходит не менее 4 секунд (между BeginUpdate и EndUpdate).
Идея такова, чтобы распараллелить каким-либо образом вытаскивание иконок из файлов.
Создали 4 потока. Первый - хватает 1 файл (предположительно функций FindNext). Второй - 2... (Ну или не в такой последовательности). И так далее пока файлы в папке не закончатся.

Только вот чего-то не хватает для понимания(мозгов).
Надеюсь, что кто-то объяснит как это реализовать, либо напишет что идея так себе и есть другие способы.
Код:
    TSHFileInfo SFI = {0};
    TSearchRec filestruct;
    TIcon *Icon = new TIcon;
    TListItem *newitem;
    String Dir;
    int RESULT_FINDFIRST;
 
    Dir = Edit1->Text;
 
    ListView1->Items->BeginUpdate();
    ListView1->Items->Clear();
 
    RESULT_FINDFIRST = FindFirst(Dir + "*.*", faAnyFile, filestruct);
 
    while (!RESULT_FINDFIRST) {
        if ((filestruct.Name != ".") && (filestruct.Name != "..")) {
 
            newitem = ListView1->Items->Add();
            newitem->Caption = filestruct.Name;
            newitem->SubItems->Add(filestruct.Size);
 
            SHGetFileInfo((Dir + filestruct.Name).c_str(), 0, &SFI, sizeof(SFI),
                SHGFI_ICON | SHGFI_SMALLICON);
            Icon->Handle = SFI.hIcon;
            newitem->ImageIndex = ImageList1->AddIcon(Icon);
            DestroyIcon(SFI.hIcon);
        }
        RESULT_FINDFIRST = FindNext(filestruct);
    }
 
    ListView1->Items->EndUpdate();
FunnyK12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
иконки в listView Etsareva Общие вопросы Delphi 1 21.06.2019 03:23
Иконки в ListView C++ Trust_357 Win Api 2 16.02.2012 03:50
Загрузка иконки из потока altar Общие вопросы C/C++ 6 02.02.2011 14:01
ListView и Иконки. Leo20 Общие вопросы Delphi 0 24.10.2009 18:07
ListView и Иконки. Leo20 Общие вопросы Delphi 2 24.10.2009 17:15