|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.01.2015, 11:04 | #1 |
Пользователь
Регистрация: 15.10.2012
Сообщений: 25
|
ADOTable
Здравствуйте!
Подскажите, почему программа чтения значений полей из таблицы ADOTable работает медленно (чем больше записей в таблице тем медленее) - 52 секунды, а если я убираю из цикла команду ADOTable1.Next, то выполняется за 5 секунд? Можно ли увеличить скорость выполнения программы с командой ADOTable1.Next ? Программа Код:
Последний раз редактировалось Stilet; 20.01.2015 в 11:25. |
20.01.2015, 11:13 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Такие циклы лучше делать while not ADOTable1.Eof do если вообще делать.
Без Next-а не будет перехода на следующую запись. И, да, чем больше записей в таблице тем дольше. И чем больше обращений к vcl в цикле, тем хуже. Приведенный цикл вообще-то ни чего не делает, кроме бестолкового обращения к vcl
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
20.01.2015, 11:26 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
20.01.2015, 13:41 | #4 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
нельзя except пустым делать...
Код:
Не стесняемся, плюсуем!
|
20.01.2015, 13:48 | #5 |
Пользователь
Регистрация: 15.10.2012
Сообщений: 25
|
Попробую, то что Вы предлагаете.
Задача: есть таблица.dbf, надо данные прочитать в поля массива. Я привел упрощенную рпограмму без записи в массив, но суть дела не меняет. Как бы ускорить чтение данных из таблицы в массив. |
20.01.2015, 13:52 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
А зачем читать в массив еще? Всмысле сам полученный набор он ведь и так в памяти массивом двумерным хранится как правило. Так-то конечно если нужна перегонка, без цикла не обойтись, но для чего... Я может глупые вопросы задаю, но ИМХО перечитка данных делается в особых случаях, когда это действительно необходимо. Врядли твой случай такой.
I'm learning to live...
|
|
20.01.2015, 13:52 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Массив - это что? DBGrid не подойдет?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
20.01.2015, 13:59 | #8 |
Пользователь
Регистрация: 15.10.2012
Сообщений: 25
|
Исходная таблица находится в файле в формате FoxPro, программа на Дельфи напрямую не работает с такой таблицей, поэтому надо переслать в массив.
Проверил с WHILE - выполняется за 50 сек. Пробовал с DBGridом работает еще медленее. |
20.01.2015, 14:24 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Ладно, не буду мешать флудом - Делай в цикле перегонку и не используй в нем никаких визуальных компонентов.
I'm learning to live...
|
|
20.01.2015, 14:29 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А сколько записей в той таблице?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ADOTable связи | MrMorozko | БД в Delphi | 1 | 04.05.2011 09:36 |
Вопрос по ADOTable | Sanakan | Помощь студентам | 1 | 28.03.2010 12:35 |
AdoTable | Artruman | БД в Delphi | 4 | 03.04.2009 02:07 |
AdoTable | Mishina | БД в Delphi | 2 | 15.06.2008 06:35 |
Как копировать данные из ADOTable в ADOTable? | mauar | БД в Delphi | 1 | 10.05.2008 16:05 |