Страница: 1 |
Страница: 1 |
Вопрос: Тормоза приложения
Добавлено: 09.02.05 21:20
Автор вопроса: Andrey999 | Web-сайт:
Народ возникла такая проблема. Написал программу себе на работу для облегчения труда (базы данных), вродебы все нормально работает не без глюков конечно и вот когда начал плотно работать с программой то-есть весь день начал замечать, что она в процессе работы начинает тормозить и чем дольше в ней работаешь тем больше она тормозит, компьютер довольно мощьный но когда я сел за старенький Р-2... это был просто кошмар через час два работы она не стала даже код выполнять правильно вносила в базу данные куда попало да еще и неверные (там генерится случайный код нового изделия на основе генератора RND) так он и туда умудряется пургу загнать (код типа 0000002) может встречатся много раз на совершенно разные наименования.
Может кто подскажет как оптимизовать код, как правитьно выгружать формы из памяти и т.п. Буду очень благодарен за любую помощь.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
rx
ICQ: 310731115
Вопросов: 10
Ответов: 45
Web-сайт:
Профиль | | #1
Добавлено: 09.02.05 22:29
Формы вигружают так:
Unload [Имя форми]
Обекти перемнних удаляут так:
Set [переменная] = nothing
Труднo скaзать в чом причина в конкретном случае, код может бить немного облехчил ету задачу
Номер ответа: 2
Автор ответа:
Keen
ICQ: 284-467-526
Вопросов: 12
Ответов: 25
Профиль | | #2
Добавлено: 09.02.05 22:39
Насчет RND: Естественно, числа будут повторяться. Rnd генерирует случайные числа, они будут повторяться и не один раз.
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 09.02.05 22:45
Создай массив и в нем храни, какие случайные числа уже выбирались
Номер ответа: 4
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #4
Добавлено: 09.02.05 23:02
Нет, дело в том, что код генерится не просто как случайное число, а он состоит из нескольких параметров таких например как наименование переобразуется в число и общий код где то 25 цифр.
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 09.02.05 23:32
Если базы данных, закрывай каждый рекордсет, каждое соединение. Старайся не плодить рекордсеты инструкциями типа Dim Rs As New ADODB.Recordet. Никакой Unload или End не поможет, по-прежнему данные будут висеть в памяти. Лучше уж посадить на форму какой-нибудь ADODC, он при выгрузке формы сам закроет рекордсет.
А случайные числа обязятельно надо проверять на наличие, т.к. они повторяются раз за разом через некоторое количество генераций. Если существует - просто XOR допустим с GetTickCount
Номер ответа: 6
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #6
Добавлено: 10.02.05 07:24
А команда set rs=nothing - очищает память?
И вообще, дополню немного вопрос. Во время отладки иногда выходишь из программы не нажимая "ВЫХОД", где вся память очищается, а просым нажатием на "стоп". После определенного количества таких выходов, ВБ может в любой момент вылетить во всякие Unexpected ошибки, Аут оф мемори и прочие радости. При этом несколько раз валились контролы на формах, иной раз - просто пропадали...
Цитирую Cresta:
Никакой Unload или End не поможет, по-прежнему данные будут висеть в памяти.
Конец цитаты.
Как эти данные из памяти выкинуть? Или никак?
Номер ответа: 7
Автор ответа:
rx
ICQ: 310731115
Вопросов: 10
Ответов: 45
Web-сайт:
Профиль | | #7
Добавлено: 10.02.05 11:34
Set Rs = Nothing '- поможет, просто должен помоч;
Dim Rs As New ADODB.Recordet '- ето обектная переменная;