Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];

Вниз

как быстро загрузить в Listview до 500 000 записей?   Найти похожие ветки 

 
Ruzzz ©   (2008-11-16 15:53) [0]

Привет! Сам вопрос звучить немного глупо, но вот проблема, как проги для работы с БД это делают? Я так понимаю что стандартные средства типа TListview не могут этого делать?

Может кто-то подсказать статьи или хоть намекнуть на приемы какие?

Может подгружать самому всю свою инфу, а потом как то переделывать TListview.Items.Add или точнее смотреть как он это делает и просто переделать метод?

Может использовать буфер, в один момент загружать лишь часть инфы в TListview? Корректировать вертикальный скролл и следить за ним, при перемешении подгружать нужную инфу? Все это кажется каким-то не правильным :(


 
Palladin ©   (2008-11-16 15:57) [1]

TListView.OwnerData + F1


 
Ruzzz ©   (2008-11-16 15:59) [2]

ага, точно, извиняюсь, и спасибо!!! :)


 
Ruzzz ©   (2008-11-16 18:09) [3]

мож кому нада будет:

1) Открываем файл данных, подсчитываем кол-во записей, заодно формируем список Records (offset, size) для каждой записи, у меня это очень быстро получается

2) далее устанавливаем ListView.Items.Count

3) ранее вставляем код в ListView.OnData - тут передается один параметр Item: TListItem, смотрите на Item.Index и быстренько читаете из файла запись с нужной позиции используя ранее созданный список Records, используя Item.Caption и Item.SubItems.Add(n) выводите нужную инфу

4) есть еще ListView.OnDataHint -передает StartIndex, EndIndex: Integer - чтобы вы могли заранее подгрузить записи в требуемом диапазоне

Вообщем все оказалось просто :)


 
Ruzzz ©   (2008-11-16 18:11) [4]

да забыл, если у вас файл уже содержит инфу о кол-ве и т.д., т.е. есть какой-либо заголовок, то первый пункт вообще быстр, не нужно проходит по всему файлу


 
Правильный$Вася   (2008-11-16 19:39) [5]


> как быстро загрузить в Listview до 500 000 записей? [D7]
>  как проги для работы с БД это делают?

вообще-то такие программы используют специальные db-контролы, которые не содержат данных, я являются только дыркой для показа содержимого датасетов
а это заметно быстрее и функциональнее


 
Юрий Зотов ©   (2008-11-16 20:42) [6]

Полмиллиона записей в визуальный контрол? Какой же в этом смысл? Ведь юзер все равно практически не сможет с ним работать.


 
CodeMaster ©   (2008-11-16 21:10) [7]

Ну если только присобачить туда систему поиска. И то нужна она будет если у тебя это будет Архив


 
Юрий Зотов ©   (2008-11-16 22:03) [8]

> CodeMaster ©   (16.11.08 21:10) [7]

Даже если присобачить систему поиска, то зачем грузить данные в визуальный контрол? Система поиска прекрасно может работать и с невидимыми данными, а отображать уже найденное. Поэтому смысла в полной загрузке всех данных в визуальный контрол все равно нет.


 
CodeMaster ©   (2008-11-16 23:00) [9]


> Юрий Зотов ©   (16.11.08 22:03) [8]

Да ты прав конечно, это ненужное забитие памяти, но а если пользователь не знает что находится в архиве?


 
tesseract ©   (2008-11-16 23:12) [10]


> но а если пользователь не знает что находится в архиве?


Пусть не знает дальше. Подгрузку можно по построенному дереву организовать. и SQL в принципе, в таком случае рулит.


 
KilkennyCat ©   (2008-11-16 23:43) [11]


> но а если пользователь не знает что находится в архиве?

а если знает, то это - инопланетянин. полмиллиона записией помнить...


 
MsGuns ©   (2008-11-17 11:16) [12]

Использовать боксы для ХРАНЕНИЯ и ПОИСКА большого кол-ва табличных данных - явно неудачное решение. Существует множество куда более удобных средств для этого. Например, наборы данных (наследники TDataSet), которые умеют делать много того, чего боксы не умеют (например, поиски, сортировки, фильтрации и т.д.)
Если данные берутся каждый раз с разных мест, т.е. нет фикстрованного и стабильного источника, то подойдет датасет в памяти (в библиотеке


 
MsGuns ©   (2008-11-17 11:20) [13]

Блин, нажал не ту кнопке в этой долбанной опере.
.. RxLib), если же источник один, то я бы использовал TClientDataSet в локальном, файловом режиме, а такжке для отображения TDataSource+TDBGrid - все это замечательно летает на сотнях тысячах записей


 
Ega23 ©   (2008-11-17 11:48) [14]


> апример, наборы данных (наследники TDataSet), которые умеют
> делать много того, чего боксы не умеют (например, поиски,
>  сортировки, фильтрации и т.д.)


Зачем на клиенте в конкретный момент времени данных больше, чем помещается в видимой области визуального контрола?
Можешь объяснить?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
2-1227002330
Проходящий
2008-11-18 12:58
2008.12.28
Запуск программы без наличия Interbase


2-1227009468
ekto
2008-11-18 14:57
2008.12.28
удилить дубликаты строк MS SQL Server


15-1225436622
Виталий Глуниц
2008-10-31 10:03
2008.12.28
Интеграция любого приложения в объект TObject


2-1226914056
Nameziz
2008-11-17 12:27
2008.12.28
Проблемы с кодировкой


2-1226985517
Z-group
2008-11-18 08:18
2008.12.28
Delphi + Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский