Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ProgressBar при загрузке TTable 
:(
    Опции темы
Maverick
Дата 8.4.2004, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Да то, что открывается гораздо медленнее я сразу понял.... Я не мог понять, почему цикл влияет на Bar.... Почему не сразу пробегает мгновенно как должно быть.... Неужели RecordCount до такой степени тормозючий? Да не могет быть.....
Добавлено @ 14:47
Да и с ProcessMessages я тоже игрался.... Обманули...... biggrin.gif Не.... пора в отпуск....


--------------------
smile
PM ICQ GTalk   Вверх
x77
Дата 8.4.2004, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Maverick, это вопрос к DbiGetRecordCount и DbiGetExactRecordCount. бде всё тормознючее, увы.

разве я тебя обманул? или ты не про меня? не понял эту фразу smile.gif я же привёл в примере. ничего не делаем, просто присваиваем RecordCount какой-то переменной без всяких вычислений. и всё, система ложится. закомментируй обращение к RecordCount - и будет пробегать влёт, как положено. по большому счёту можно было с таким же успехом написать

Код

Table.Open;
ProgressBar.Max := RecordCount;
for i := 1 to Table.RecordCount do begin
 ProgressBar.Position := i;
 Sleep (100);
end;


smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Maverick
Дата 8.4.2004, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



tounge.gif Да нет... это так - эмоции.... Понимаешь, я был так уверен, что это не сработает, вся моя сущность была против.... Но когда запустил и получилось - все равно как smile.gif .... Выглядело очень лонично - бар прошелся, таблица открылась - я просто дара речи лишился... Я был настолько шокирован, что оцепенел как кролик перед удавом.... Была мысль вставить ProcessMessage, что потом и сделал, но в из-за шока подумалось - а вдруг именно в этом и есть уловка... в отсутствии.... Поэтому реплика "Обманули" это ни к кому.... Это себе... Ну повелся как на Мавроди.... biggrin.gif biggrin.gif biggrin.gif Спасибо за вывод из шока....


--------------------
smile
PM ICQ GTalk   Вверх
x77
Дата 8.4.2004, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Maverick, smile.gif



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Cashey
Дата 8.4.2004, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



x77
Абсолютно верно, если запустить мой код (например, в кнопке) то в гриде записи появятся одновременно с концом работы ProgressBar'а. Вот только это не показатель загрузки таблицы, а мы задерживаем циклом отображение данных в гриде.
Вообщем-то можно использовать если надо обмануть пользователя и показать ему "вот видете скока надо ждать"
А иначе я вообще не вижу смысла использовать Бар. Я проверил время загрузки таблицы dBase с более чем 15000 записями занимает ок. 60 миллисикунд. ProgressBar имеет смысл использовать только если загрузка больше хотя бы 3-5 сек.

И еще x77 твой вариант тоже не идет, я проверил время загрузки Квери и Тэйбла почти одинаково, своим кодом ты обеспечишь 2-х кратную ошибку


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Maverick
Дата 8.4.2004, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Цитата
Вот только это не показатель загрузки таблицы, а мы задерживаем циклом отображение данных в гриде.


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

Цитата
Вообщем-то можно использовать если надо обмануть пользователя и показать ему "вот видете скока надо ждать"
А иначе я вообще не вижу смысла использовать Бар. Я проверил время загрузки таблицы dBase с более чем 15000 записями занимает ок. 60 миллисикунд. ProgressBar имеет смысл использовать только если загрузка больше хотя бы 3-5 сек.


У меня таблица была в полмиллиона записей - ты обманул меня на полторы минуты.... слишком жестоко даже для среднего пользователя... biggrin.gif Да и смысл - создавать ореол проге? Обычно такие таблицы грузятся секунд 15...




Добавлено @ 17:04
Я где-то компонент видел соответствующий..... ищу....

Добавлено @ 17:13
не нашел wow.gif ... ну ладненько....


--------------------
smile
PM ICQ GTalk   Вверх
Akella
Дата 20.4.2004, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



А какие типы тиблиц вы используете?
Я пробовал на Paradox7 - таблица на 500 тыс записей открывается моментально, и никакого процесса показа не происходит thumbs-up.gif
PM MAIL   Вверх
Maverick
Дата 20.4.2004, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



Informix... Жутко загруженный сервер и сеть...


--------------------
smile
PM ICQ GTalk   Вверх
Akella
Дата 20.4.2004, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



а может в BDE есть какие-нибудь функции типа Dbi...тыры-пыры?
в некорорых программа это ведь реализовано, наверное.
PM MAIL   Вверх
x77
Дата 20.4.2004, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



dsergey, в бде - нет. есть левосторонние пакеты, которые работают с теми же dbf без участия бде. и вот в них мне такое встречалось. но навскидку я не помню sad.gif



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Akella
Дата 21.4.2004, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



hehe.gif tounge.gif smile.gif omg.gif hmmm.gif notify.gif thumbs-up.gif Неужели крутые программисты из дяди Бормана немогли сделать что-нибудь для показа процесса загрузки таблиц? bored.gif rolleyes.gif
PM MAIL   Вверх
x77
Дата 21.4.2004, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



dsergey, не было смысла. и таблицы и квери, работаеют, по большому счёту, одинаково, разница только в тои, что квери позволяет выполнять запросы. но если ты посмотришь исходники, сами методы организации буфера, доступа к записям, - используют одни и те же процедуры bde, а точнее - dbi. в этом смысле бормановская TQuery представляет собой как бы эмуляцию нормальной квери, но открывается она точно так же, как и таблица. гнусное нае@#$во, в общем. а таблицы открываются влёт, т.к. все записи из базы они не сосут: это происходит только при нажатии, например, Ctrl+End на гриде.

смеха ради воткни на форму Table1 и Query1, пропиши для обоих Open, и посмотри, что он запускает. для обоих запускаться будет метод TDataSet.Open, сводящийся к вызову TDataSet.SetActive. он вызовет виртуальный метод InternalOpen, который переопределён в TBdeDataSet, являющимся одним из предков как квери, так и таблицы. все различия между ними связаны с обработкой запросов, парааметров, и пр., а механизм доступа к данным одинаков абсолютно. и заключается этот механизм в буферизованном чтении таблицы, предполагающем мгновенное открытие и подсос по мере надобности. спрашивается, зачем там прогрессбар? тормозить может только обработка сложного запроса, но отобразить это процесс невозможно, т.к. на любом субд он представляет из себя "чёрный ящик", никто не знает, сколько времени он займёт и на каком этапе в данный момент эта обработка находится. а после того, как сам запрос "сгенерён", открытие происходит действительно влёт независимо от кол-ва записей.

тормоза при работе с парадоксовскими таблицами как правило вызваны корявостью самого кода, когда при инициализации программы кто-то умный открывает десяток справочных таблиц, связанных между собой десятком лукап-полей, а потом жалуется, какое, дескать, тормознутое бде. а реально, при грамотной организации работы, бде - одна из самых быстрых субд smile.gif вернее, самая быстрая "иммитация" субд.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Akella
Дата 22.4.2004, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



То х77 - огромное спасибо за объяснения.
PM MAIL   Вверх
jonik_Dk
Дата 23.4.2004, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 18.2.2004

Репутация: 1
Всего: 1



Кажись компонентик есть для энтого дела.

baaa.gif
Добавлено @ 10:38
Нашел как называется : TDBProgressBar, правда версия 2.7 для Delphi5
Так что кому нужно для Delphi 6 и выше можете поискать в Net.

Никогда не пользовался этим компонентом - предлагаю не проверенный товар.

Если устраивает кого такие условия, могу скинуть hehe.gif
PM MAIL   Вверх
x77
Дата 23.4.2004, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



dsergey, это не столько объяснения, сколько рассуждения вслух. ребята, читайте исходники. на ночь, вместо Hustler и Playboy'а. и всё будет классно ;)

jonik_Dk, кидай smile.gif на [email protected]




--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0890 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.