Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загрузка из файла в ListView


Страницы:   1 2

Андреев Саша ©   (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 в  виртуальном режиме


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо