0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 28
|
|
1 | |
Как ускорить загрузку списка ListBox из txt-файла?29.10.2008, 00:42. Показов 2714. Ответов 7
Метки нет (Все метки)
У меня на главной форме 5 компонентов ListBox. В каждый из них загружаются данные из txt-файлов объемом по 1 Мб. Способ загрузки обычный
listbox1.Items.LoadFromFile('file.txt'); Дело в том, что процесс загрузки занимает около 12 секунд. Есть ли возможность ускорить этот процесс?
0
|
29.10.2008, 00:42 | |
Ответы с готовыми решениями:
7
Ускорить загрузку массива в listbox Ускорить загрузку звукового файла и его воспроизведение Как реализовать загрузку из текстового файла (*.txt) из интернета в Memo или другие компоненты? Как осуществить загрузку двунаправленного связанного списка из файла? |
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 |
У меня наверное в глазах двоится, на какой вкладке находится 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
|
0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 28
|
|
29.10.2008, 20:09 [ТС] | 8 |
Уже использую.. однако заметного результата нет
0
|
29.10.2008, 20:09 | |
29.10.2008, 20:09 | |
Помогаю со студенческими работами здесь
8
Как реализовать загрузку txt файла на сервер с технологией Drag and Drop? (на примере готовых js плагинов) Как ускорить загрузку БД? Как ускорить загрузку сайта? Как ускорить загрузку Windows ХР? WPF: как ускорить загрузку страницы Как ускорить загрузку своего браузера? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |