![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка из файла в ListView
Андреев Саша © (2013-07-08 23:49:00)Здравствуйте! Хочу загрузить файл в ListView по возможности побыстрее.
Нагуглил такой способ:
procedure LoadListViewToFile(ListView: TListView; S: String);
// © Song
Const Delimiter = '|';
Var
ff: TextFile;
label 1;
Begin
ListView.Clear;
{$I-}
AssignFile(Ff,s);
Reset(Ff);
if IOResult<>0 then Goto 1;
CloseFile(Ff);
{$I+}
AssignFile(ff, S);
Reset(ff);
try
While not Eof(ff) Do
Begin
ReadLn(ff,S);
With ListView.Items.Add Do
Begin
Caption:=Copy(S,1,Pos(Delimiter,S)-1);
System.Delete(S,1,Pos(Delimiter,S));
S:=StringReplace(S,Delimiter,#13#10,[rfReplaceAll]);
SubItems.Text:=S;
End; {With}
End; {While}
finally
CloseFile(ff);
end;
1:{..}
End;
Для сохранения ListView в файл такая процедура:
Procedure SaveListView(S: String; ListView: TListView);
// © Song
Const Delimiter = '|';
Var ff: TextFile;
t: Integer;
begin
AssignFile(ff, S);
ReWrite(ff);
try
With ListView Do For t:=0 to Items.Count - 1 Do
WriteLn(ff,StringReplace(Items[t].Caption + Delimiter + Items.Item[t].SubItems.Text,#13#10,Delimiter,[rfReplaceAll]));
finally
CloseFile(ff);
end;
end;
Загрузка списков в 200-300кб уже занимает большое время. Можно
как-то модернизировать процедуру загрузки для ускорения или использовать другой метод? С БД связываться пока неохота, программа
простенький тел.справочник до 500 записей. Возможно кто использует поновее и побыстрее ListView со своими методами Load/Save. Подкиньте ссылку пожалуйста на этот компонент. Спасибо!
Плохиш (2013-07-11 12:38:00) [1]
> Link можно с примером?
Учебник по программированию в среде делфи.
sniknik (2013-07-11 09:50:00) [2]> или можно как-то данные показать юзверю в ListView?
конечно... и как же ты без любимого "тормоза"? вставляй, и тут же пиши на форум -
> Странно, но результаты тестов показали, что обе (три) процедуры загружают один и тот же файл за одинаковое время. Как бы это дело ускорить? :/
может сначала научится? на стандартном? ведь не умеешь с ListView работать, нафига и к базам его тянешь?
Dennis I. Komarov (2013-07-11 09:42:00) [3]Цель сего творения какова?
Андреев Саша (2013-07-10 19:03:00) [4]>Плохиш :) ja-ja ther goot volkswagen narkota! ;) Link можно с примером?
Плохиш (2013-07-10 13:41:00) [5]
> Андреев Саша (10.07.13 12:02) [22]
> >Плохиш Для отображения результатов поиска в БД Access
> обязателен DBGrid
nein
> или можно как-то данные показать юзверю в ListView?
ja
sniknik (2013-07-10 13:15:00) [6]> Какая БД попроще подойдет для ведения тел.справочника до 500 записей(Access, SQL lite, MySQL)?
любая
но вообще, для 1 таблички -
> возьми любой датасет/рекордсет в памяти...
Андреев Саша (2013-07-10 13:08:00) [7]>Dimka Maslov Зеленые,синие,красные ;)
Dimka Maslov (2013-07-10 12:28:00) [8]
> Список он и в Африке список
К сожалению, нет. Списки бывают разные.
Андреев Саша (2013-07-10 12:02:00) [9]>Плохиш Для отображения результатов поиска в БД Access обязателен DBGrid или можно как-то данные показать юзверю в ListView?
Плохиш (2013-07-10 11:52:00) [10]
> попроще
> Access
Андреев Саша (2013-07-10 11:47:00) [11]>sniknik Какая БД попроще подойдет для ведения тел.справочника до 500 записей(Access, SQL lite, MySQL)?
Андреев Саша (2013-07-10 11:36:00) [12]>Dimka Maslov Список он и в Африке список :)
Dimka Maslov (2013-07-10 11:25:00) [13]
> этот атавизм работает также как и твои "потоки"
На низком уровне - да, но они оставлены исключительно для целей обратной совместимости. Если они ещё есть, то не значит, что ими надо вовсю пользоваться. Они не быстрее и не медленнее, но с их использованием код становится яснее, проще и понятнее. И проблема автора не столько в скорости чтения и обработки данных, а в непонимании принципов работы компонента TListView.
sniknik (2013-07-10 09:43:00) [14]> Это как?
> скажи "не знаю, а выбранное кажется проще" (хотя это ошибка, чтобы на нем сделать нормально ... ).
учи базы.
RWolf (2013-07-10 00:06:00) [15]
> robt5 (09.07.13 22:03) [13]
> этот атавизм работает также как и твои "потоки"
не так же.
потоки поддерживают большие файлы, а атавизмы — нет.
Германн (2013-07-09 23:56:00) [16]
> Андреев Саша (09.07.13 23:03) [14]
>
> >MBo Это как?
Читать хелп по TCustomListView.OwnerData
Андреев Саша (2013-07-09 23:03:00) [17]>MBo Это как?
robt5 (2013-07-09 22:03:00) [18]
> Откуда взялись такие атавизмы как {$I-}, AssignFile и проч
этот атавизм работает также как и твои "потоки"
robt5 (2013-07-09 22:02:00) [19]
> Я гарантирую это.
бгг
MBo (2013-07-09 22:01:00) [20]использовать ListView в виртуальном режиме