Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 28
1

Как ускорить загрузку списка ListBox из txt-файла?

29.10.2008, 00:42. Показов 2714. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня на главной форме 5 компонентов ListBox. В каждый из них загружаются данные из txt-файлов объемом по 1 Мб. Способ загрузки обычный
listbox1.Items.LoadFromFile('file.txt'); Дело в том, что процесс загрузки занимает около 12 секунд. Есть ли возможность ускорить этот процесс?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2008, 00:42
Ответы с готовыми решениями:

Ускорить загрузку массива в listbox
Как можно изменить работу с массивом, чтобы загрузка в listbox работала быстрее? Процедура в...

Ускорить загрузку звукового файла и его воспроизведение
Добрый день всем! Начал осваивать Delphi 7 и возник вопрос по работе со звуком. Хочу сделать...

Как реализовать загрузку из текстового файла (*.txt) из интернета в Memo или другие компоненты?
1) Как реализовать загрузку из текстового файла (*.txt) из интернета в Memo или другие компоненты?...

Как осуществить загрузку двунаправленного связанного списка из файла?
имеется функция записи(естественно Employer это структура)void savelist(Employer *p, char* fname)...

7
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
29.10.2008, 01:42 2
Dux, Есть такая возможность, попробуй фаил загружать в список TStringList,
а уже из него заполняй ListBox'ы. Тут выходит так. что ты весь фаил считываешь в памят, а далее уже работаешь с памятью, а не обращаешся к файлу,намного быстрее. Можешь ещё в цикл поставить AApplication.ProcessMessages, чтоб не висло приложение.
0
0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 28
29.10.2008, 01:47  [ТС] 3
Цитата Сообщение от Arriba Посмотреть сообщение
Dux, Есть такая возможность, попробуй фаил загружать в список TStringList,
а уже из него заполняй ListBox'ы. Тут выходит так. что ты весь фаил считываешь в памят, а далее уже работаешь с памятью, а не обращаешся к файлу,намного быстрее. Можешь ещё в цикл поставить AApplication.ProcessMessages, чтоб не висло приложение.
У меня наверное в глазах двоится, на какой вкладке находится TStringList? Не могу найти..
0
257 / 173 / 27
Регистрация: 17.10.2008
Сообщений: 770
29.10.2008, 02:09 4
Dux, TStringList это не компонент-это класс.
Посмотри в книжке, или в интернете как с ними работать. Если только завтра напишу.
0
K1LLADR1LLA
29.10.2008, 09:59 5
Я написал для себя такую функцию, можешь попробовать:

------------------------------------------------------------
Код
function _AnsiFromFile(FileName:string):PAnsiChar;
var ft : file of ansichar;
    sz :integer;
    p,return  :PAnsiChar;
     procedure WorkItem;
      begin
       try
        try
         AssignFile(ft,FileName);
         Reset(ft);
         sz := filesize(ft)*sizeof(p^);
         getmem(p,sz);
        except
         on EInOutError do Raise EInOutError.Create('I\O Error. File '+#39+FileName+#39+' not          
        found.');
        end;
        try
          BlockRead(ft,p^,sz);
        except
         on EInOutError do Raise EInOutError.Create('I\O Error. Maybe textfile encoding differs 
         from ANSI');
        end;
       finally
        CloseFile(ft);
        return := p;
       end;
     end;
begin
 WorkItem;
 result := return;
end;
--------------------------------------------------
Пример использования:
ListBox. ... .Text := _AnsiFromFile(ИмяФайла);
и вообще, основнеое время при загрузке больших файлов,уходит на отрисовку строк в листбоксе...
0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 28
29.10.2008, 14:51  [ТС] 6
Не знаю, что я делаю не так, но выдает ошибку [DCC Error] Unit1.pas(65): E2362 Cannot access protected symbol TControl.Text
0
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
29.10.2008, 19:58 7
А если использовать
Код
ListBox1.Items.BeginUpdate;
listbox1.Items.LoadFromFile('file.txt');
ListBox1.Items.EndUpdate;
то быстрее не не становится?
0
0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 28
29.10.2008, 20:09  [ТС] 8
Уже использую.. однако заметного результата нет
0
29.10.2008, 20:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2008, 20:09
Помогаю со студенческими работами здесь

Как реализовать загрузку txt файла на сервер с технологией Drag and Drop? (на примере готовых js плагинов)
Всем привет. Как реализовать загрузку txt файла на сервер с помощью технологии Drag and Drop? Я...

Как ускорить загрузку БД?
Считываю в колекцию через проперти миллион рекордов за 50секунд,а надо за 30 секунд. Как...

Как ускорить загрузку сайта?
Что бы в мне посоветовали, чтобы ускорить этот сайт? http://ifb79318.bget.ru/ Спасибо.

Как ускорить загрузку Windows ХР?
Как ускорить загрузку Windows хп ? Грузится долго меня бесит, у меня на старом атлончике и то...

WPF: как ускорить загрузку страницы
Привет всем. Я использую Frame для загрузки страниц в WPF. Когда они небольшие - время загрузки...

Как ускорить загрузку своего браузера?
Сделал плюшевый браузер из компонентов: WebBrowser1, Edit1, Button1. По нажатию на Button1 в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru