Чтение Char из бинарного файла по смещению

Тема в разделе "Общие вопросы по С и С++", создана пользователем Astyxys, 13 июл 2010.

  1. Astyxys

    Astyxys New Member

    Регистрация:
    13 июл 2010
    Сообщения:
    4
    Симпатии:
    0
    Задача:

    Используя MFC, вывести на экран таблицу строк.

    Что имеем:

    Есть два бинарных файла. В первом массив int, во втором массив char, разделенный "\0", при этом кодировка UTF-8. Int-ы показывают смещение, от начала второго файла, первого символа в строке.

    Как реализовал я:

    1) Читаю первый файл в массив int
    2) Читаю второй файл в массив char
    3) В цикле заполняю структуру GV_ITEM (для вывода на экран использую CGridCtrl)
    4) Перевожу кодировку на "человеческий" (MultibyteToWidechar)
    5) Вывожу на экран

    Проблема:

    При размере файла с массивом char 40 МБ и выше(а таких большенство) вывод на экран сильно тормозит. Около 2-3 минут загрузка происходит.

    Вопрос:

    Как ускорить вывод на экран?

    Мои варианты:

    1) Разбить на отдельные процессы
    а. пункты 3 и 4
    б. пункт 5

    2) Сделать свой класс(наследник от CGridCtrl) и читать сразу в GV_ITEM

    Заранее спасибо за ответы, извинте если сумбурно...
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    CGridCtrl - это с Codeproject который? Там вроде есть режим
    VirtualMode когда GV_ITEM создавать не надо, а данные отдаются прямо
    во время отрисовки. Должно помочь.
     
  3. Astyxys

    Astyxys New Member

    Регистрация:
    13 июл 2010
    Сообщения:
    4
    Симпатии:
    0
    - Он самый.


    спс, попробую.

    А, в целом, нормальный подход? Или стоит что-то изменить?
     
  4. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Учитывая что врядли 40МБ+ у вас сразу на экран влазит, стоит грузить часть, остальное подгружать по необходимости\в отдельном потоке
     
Загрузка...

Поделиться этой страницей