Вверх ↑
Разработчик
Ответов: 26153
Рейтинг: 2127
#1: 2009-11-05 15:43:28 ЛС | профиль | цитата
Нашел выход из положения -- SendMessage(Control.Handle, LB_INITSTORAGE, 0, 104857600). В разы ускоряет быстродействие (при выделенных 100 Мб)
------------ Дoбавленo в 16.22:
Короче, вот такой метод doLoad, добавленный в ListBox, загружает файл в 1,8 Мб за 0,27 сек, вместо 6,5 сек раньше.


procedure THIListBox._work_doLoad;
var
fn:string;
Lst:PStrList;
i:integer;
begin
fn := ReadString(_Data,_data_FileName,_prop_FileName);
if FileExists(fn) then
begin
Control.Perform(WM_SETREDRAW, 0, 0);
Control.Clear;
Lst := NewStrList;
Lst.LoadFromFile(fn);
if Lst.Count = 0 then exit;
Control.Perform(LB_INITSTORAGE, 0, Length(Lst.Text));
for i := 0 to Lst.Count - 1 do
Control.Perform(LB_ADDSTRING, 0, cardinal(PChar(Lst.Items[i])));
Lst.Free;
Control.Perform(WM_SETREDRAW, 1, 0);
_hi_CreateEvent(_Data,@_event_onChange);
end;
end;

Что делать будем
------------ Дoбавленo в 16.50:
Немного ускорил
карма: 22

0