Объем текствых данных

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 24.08.2005 (Ср) 11:47

Andrey Fedorov писал(а):
lord0n писал(а):MSHFlexGrid 6.0 SP4 :)


Бяка. Брось.


не брошу, так и есть :)

Konst_One писал(а):2 lord0n
а в этот грид и нет смысла такой объем даных сразу выводить, нужно выборку ограничивать. для больших объемов надо юзать Microsoft DataGrid Control 6.0 (SP6) (OLEDB)


а чем он лучше?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 24.08.2005 (Ср) 11:49

Konst_One писал(а):2 lord0n
а в этот грид и нет смысла такой объем даных сразу выводить, нужно выборку ограничивать. для больших объемов надо юзать Microsoft DataGrid Control 6.0 (SP6) (OLEDB)


Угу. Но еще лучше один из коммерческих Grid-ов стороннего производителя.

Те что идут в комплекте с VB для реальной работы крайне неудобны и неуклюжи. Я лично использую Janus GridEx, неплохие возможности у VSFlexGrid, есть еще несколько хороших и удобных... Выбирать есть из чего.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 24.08.2005 (Ср) 12:02

Andrey Fedorov
согласен, но если нет средств на приобретение нормальных, то приходится юзать , что дают :lol:

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 24.08.2005 (Ср) 12:06

проблем с деньгами нету, а вот с формой оплаты - есть :lol:
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 24.08.2005 (Ср) 12:13

братья по разуму))).....а я не догодался что можно через грид.....вы где нибудь видели словарь с базой данных.....там создают свой формат данных ....только как это сделать.??вот вопрос что бы и грузился.....забудте про базу данных и sql запросы.....могу работать без проблем...
Сделай что нибудь......хорошее!

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 24.08.2005 (Ср) 12:38

еще я пробывал запихнуть 50 тысяч слов в mdb, грузиться очень долго......
Сделай что нибудь......хорошее!

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 24.08.2005 (Ср) 13:24

n-soft писал(а):еще я пробывал запихнуть 50 тысяч слов в mdb, грузиться очень долго......


я конечно извиняюсь, но ты ГОНИШЬ
Код: Выделить всё

Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db2.mdb;Mode=Share Deny None;"

Set RS = New ADODB.Recordset
RS.Open "select * from tab1 where a = 'a0039999'", db, adOpenDynamic, adLockOptimistic

Label1.Caption = RS.Fields(0)


grd.ClearFields
Set grd.DataSource = RS

это выборка одного слова
грузится за 0.1 сек



Код: Выделить всё

Set db = New ADODB.Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db2.mdb;Mode=Share Deny None;"

Set RS = New ADODB.Recordset
RS.Open "select * from tab1", db, adOpenDynamic, adLockOptimistic

grd.ClearFields
Set grd.DataSource = RS

полный сброс в грид 0.3 сек

в базе 100 000 слов
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 24.08.2005 (Ср) 13:37

мне грид не нужен........если в из базы в текстовый бокс или в ричконтрол сбрасывать....комп опухнет.....
Сделай что нибудь......хорошее!

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 24.08.2005 (Ср) 13:39

n-soft писал(а):мне грид не нужен........если в из базы в текстовый бокс или в ричконтрол сбрасывать....комп опухнет.....


а зачем те всю базу сливать текстбокс?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 24.08.2005 (Ср) 13:56

да несильно он и опух :lol:
100 000 слов за 1 минуту и 30 сек.
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 24.08.2005 (Ср) 14:06

У текстбокса ограничение то ли на 32К, то ли на 64К текста. Твоя база в общем случае не поместится.

Если кидать данные в RTB, который лишен этого недостатка, то это может быть действительно долго, т.к. он перед отображением конвертирует голый текст в RTF-формат. Не советую так делать.

А вот если ты неск. десятков тысяч строк засунешь в грид, то он это спокойно проглотит (должен, по крайней мере). Причем сделает это гораздо быстрее, чем ты думаешь.

Только учти, что согласно статистике, пользователь практ. никогда не крутит список дальше первой тысячи (а на самом деле дальше первой сотни). Сто раз подумай, зачем юзеру реально столько данных - он не будет их все просматривать, он не сумасшедший. Так что советую сделать фильтр, дабы юзер мог задавать критерии отбора данных и получать выборки меньшего размера, а следовательно, гораздо более полезные.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 24.08.2005 (Ср) 14:20

я бы вообще сделал бы как это реализовано в Lingvo
вводишь буквы, а он делает выборку какие слова ему попадаются
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 24.08.2005 (Ср) 14:26

наконец то реальный собеседник появился......Ennor......я так и делаю в РТВ-формате(выбросил ненужные ртв-коды), но можно как нибудь подругому....программным путем......я начал создавать типы переменых и через них записывать...в текстовый файл...но считывание.....
Сделай что нибудь......хорошее!

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 24.08.2005 (Ср) 14:30

в Лингво....я смотрел......я хочу сделать как в оксфордском словаре...там сразу грузиться весь...словарь
Сделай что нибудь......хорошее!

sash
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 17.05.2003 (Сб) 3:37

Сообщение sash » 24.08.2005 (Ср) 14:50

А как файл читаешь??

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 24.08.2005 (Ср) 18:21

А, т.е. у тебя интерфейс а-ля Лингво. Ну, в таком случае вынужден тебя разочаровать: там дофига самописных наворотов и ухищрений использовано, и все это только для того, чтобы внешне все выглядело просто, интуитивно понятно и не вгоняюще в ступор.

Во-первых, список. Обычный ListBox не в состоянии вместить более 32К элементов. Следовательно, нужно либо полностью с самого нуля писать собственный контрол, что крайне геморно, либо идти на ухищрения - реально в список помещается только небольшая часть слов, а остальные подгружаются при необходимости в процессе поиска слова в базе и скроллинга списка в соответствующее место. Новое подгружается, старое удаляется, а скроллбар там вообще нарисованный и прилеплен снаружи, чтобы создавать иллюзию немеряности этого списка. Все просто, как каммала :).

Далее. Если ты думаешь, что с подобных программных продуктах используется формат голого текста, ты сильно заблуждаешься. Разумеется, используются внутренние форматы, в каждом словаре они свои. Разумеется, слова в этих списках не просто отсортированы по алфавиту, они еще и проиндексированы - про хэш-функции слыхал? Вот хэши грузятся в память действительно все, но это тебе не строки переменной длины, это числа (ну или какие-либо гуидо-подобные образования) и самое главное в них - их длина постоянна, независимо от длины изначального слова, на основе которого хэш был сформирован. Ты себе не представляешь, какой прирост скорости дает переход от данных переменной длины к данным с постоянным размером.

Таким образом, в первом приближении вырисовывается следующая структура хранилища данных:
    1. Список хэшей слов (страница индекса, если выражаться в терминах СУБД), отсортированных для ускорения поиска;
    2. Список собственно слов (страница данных), причем первичен в данном списке хэш слова, а не его текст - иначе быстрого поиска по индексу не получится;
    3. Список словарных статей с переводами / значениями. Отсортирован опять-таки по хэшу для быстрого поиска. Также возможна дополнительная индексация, особенно если файл один - в этом случае он получится действительно большим, до сотни мегабайт и более, и любые средства, ускоряющие вычисления позиции, с которой надо начинать чтение, в данном случае хороши.


И так про каждую стадию работы или часть программы написать можно. Средства индексации, поиска и сортировки я, с твоего позволения, описывать не буду - не силен я в них, а Дональд Кнут так вообще целый том своей эпохальной книги "Искусство программирования для ЭВМ" посвятил именно этой теме. И я полагаю, что над каждым реальным таким продуктом не один кандидат или доктор корпели, описывая теоретическую часть и делая сравнительный анализ алгоритмов. Я не говорю, что у тебя ничего не получится, но теперь ты должен хотя бы примерно представлять, какой объем работы (и какой именно работы) тебя ждет. Удачи.

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 30.08.2005 (Вт) 7:26

Ennor хэш-функции что выполняют? где можно оних почитать? можно тебе на мыло написать
Сделай что нибудь......хорошее!

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 30.08.2005 (Вт) 7:28

Ennor хэш-функции - как они обрабатывают ты написал, а как они создаются...можно пример? где можно оних почитать?
я наверно слелаю поиск по словам.........
можно тебе на ящик написать..........
Сделай что нибудь......хорошее!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.08.2005 (Вт) 8:20

Ennor писал(а):Во-первых, список. Обычный ListBox не в состоянии вместить более 32К элементов.


Берется Grid, который способен работать с Recordset-ом или массивом. Причем Recordset в данном случае удобнее - по нему очень просто организовать поиск (Find или Filter).

Ennor писал(а):Следовательно, нужно либо полностью с самого нуля писать собственный контрол, что крайне геморно,


Нафиг? Оно и так есть - как коммерческие Grid-ы так и бесплатные, в том числе с исходниками. Надо просто их использовать.

Ennor писал(а):либо идти на ухищрения - реально в список помещается только небольшая часть слов, а остальные подгружаются при необходимости в процессе поиска слова в базе и скроллинга списка в соответствующее место. Новое подгружается, старое удаляется, а скроллбар там вообще нарисованный и прилеплен снаружи, чтобы создавать иллюзию немеряности этого списка. Все просто, как каммала :).


Вообще-то примерно так работает любой нормальный ненагружаемый Grid...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 30.08.2005 (Вт) 8:49

Andrey Fedorov
не grid явно не подойдет.......я собираюсь сделать, вот как.........
всю словарую базу загнать в текстовый режим, а каждое слово проиндексировать. Затем через ЛистБокс по словам вытаскивать....пояснение.......так сделать реально?
Сделай что нибудь......хорошее!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.08.2005 (Вт) 9:01

n-soft писал(а):не grid явно не подойдет.......


Да чего ради - зачастую они жизнь сильно упрощают. Правда ими пользоваться надо уметь...
Если интересно глянь - в приложенном архиве на всех рисунках один и тот же Grid...

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


Я бы не стал мучиться - считал бы в клиентский Recordset (из mdb-шки или бинарного файла - не суть важно) и для нужных полей бы сделал:

Код: Выделить всё
r!Слово.Properties!Optimize = True


Это и есть индексирование, причем в памяти. Быстро и проще некуда.

Далее остается только искать Find/Filter - и все будет моментально.

n-soft писал(а):Затем через ЛистБокс по словам вытаскивать....пояснение.......так сделать реально?


Нафига тебе ListBox-то?

Впрочем я не знаю какой ты интерфейс хочешь сделать...
Вложения
Grid.rar
(230.29 Кб) Скачиваний: 39
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 30.08.2005 (Вт) 9:08

Andrey Fedorov
мне важна быстрая загрузка словарной базы .....а не поиск по базе.......

чет я не понял насчет клиентского рекорсета.....
а как можно из бинарного файла сделать рекорсет......это фишка вроде для базы данных(виртуальная табица в оперативке)
Сделай что нибудь......хорошее!

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 30.08.2005 (Вт) 9:11

Andrey Fedorov
ты не мог бы расширение файла-примера создать *.pdf....а ту админ закрыл доступ к скачиванию раров, зипов и другой фени...)) не охота к нему идти.....
Сделай что нибудь......хорошее!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.08.2005 (Вт) 9:15

n-soft писал(а):мне важна быстрая загрузка словарной базы .....а не поиск по базе.......


Да чего ради у тебя быстро не грузится? Все моментом, если сам что-то, конечно, не накрутишь...

n-soft писал(а):чет я не понял насчет клиентского рекорсета.....


Опция у Connection/Recordset означает что Recordset создается на клиентской машине, а не на сервере.

n-soft писал(а):а как можно из бинарного файла сделать рекорсет......это фишка вроде для базы данных(виртуальная табица в оперативке)


Просто загружаешь данные в Recordset. Их же все равно откуда загружать, правда из базы проще...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.08.2005 (Вт) 9:21

n-soft писал(а):Andrey Fedorov
ты не мог бы расширение файла-примера создать *.pdf....а ту админ закрыл доступ к скачиванию раров, зипов и другой фени...)) не охота к нему идти.....


А ты уверен что после этого пройдет?
Часто не на расширение смотрят, а на начало файла - простая смена расширения не помогает...

Впрочем - держи - попробуй, а я через полчаса файл прибью...

Правда не pdf, но все одно переименуешь...
Последний раз редактировалось Andrey Fedorov 30.08.2005 (Вт) 10:39, всего редактировалось 1 раз.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 30.08.2005 (Вт) 9:34

Andrey Fedorov
пишет запрещено......грю pdf......просто проверено!

для быстрой загрузки .......так на пентиуме 3 или 2 .....долго будет...

насчет контрола......что он может......
Сделай что нибудь......хорошее!

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 30.08.2005 (Вт) 9:39

Andrey Fedorov писал(а):Если интересно глянь - в приложенном архиве на всех рисунках один и тот же Grid...


а какой ты грид используешь?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

n-soft
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 24.08.2005 (Ср) 8:53

Сообщение n-soft » 30.08.2005 (Вт) 9:44

lord0n
в вообще для списка слов собираюсь использвовать.....стандартный ЛистБокс из fm20.dll....а для отображения результата РичБокс
Сделай что нибудь......хорошее!

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 30.08.2005 (Вт) 9:49

n-soft писал(а):lord0n
в вообще для списка слов собираюсь использвовать.....стандартный ЛистБокс из fm20.dll....а для отображения реультата РичБокс


вообщета, вопрос был не к тебе, а к Andrey Fedorov :D
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 30.08.2005 (Вт) 10:32

n-soft писал(а):Andrey Fedorov
пишет запрещено......грю pdf......просто проверено!


pdf запрещен на здешнем сервере.

Ну ладно, вот тебе ссылка на бесплатный Grid: http://vbaccelerator.com/home/VB/Code/Controls/S_Grid_2/S_Grid_2/article.asp

n-soft писал(а):для быстрой загрузки .......так на пентиуме 3 или 2 .....долго будет...
насчет контрола......что он может......


Может все что может с ним сделать программер...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Пред.След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 22

    TopList