![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Sett |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 20.12.2004 Где: Подольск Репутация: нет Всего: нет |
Доброго времени суток всем!
У меня вопрос! Пишу прогри исключительно для личного использования связанные с базой данных. заметил чем больше в прогу добавляешь наворотов примочек, ну короче всякой упрощёнки (люблю чтоб было красиво и всё продумано не обесудьте) при определённом промежутки времени когда программа активна выдаётся окошко внутренней ошибки, типа программе не хватает памяти (ресурсов пк), хотел узнать как можно решить такую проблему, может как нибудь можно освобождать в процессе работы программы саму память от не нужной инфы. Буду очень благодарен, если поможете решить эту задачу. По возможности пришлите примеры необходимых действий, чем больше тем лучше. Спасибо. |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Больше чем уверен, что все формы вы создаете при старте программы, с точки зрения расхода ресурсов это просто недопустимо. Формы должны создаваться по мере их необходимости и как только какая-то из форм не нужна она должна уничтожаться. В идеале при старте программы у вас должна находиться главная форма приложения и Data Module (для БД)
Добавлено @ 21:45 Если на какой-то из форм должно находиться много компонентов и это оформляют в виде закладок, то для обеспечения экономии памяти можно каждую закладку оформить при разработке в виде отдельных форм, а при перемещении по закладкам подгружать формы в закладке. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| bursa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 25.2.2005 Где: Липецк Репутация: нет Всего: 1 |
Открывай форму так и все будет ОК
|
|||
|
||||
| Pakshin A. S. |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Не совсем... Когда мы пооткрываем даже поочередно все формы, то мы получим тот же самый набор занимаемой памяти, как и при запуске программы... Если уже заморачиваться с этим способом, то:
Это сообщение отредактировал(а) Pakshin A. S. - 17.8.2005, 10:13 |
||||
|
|||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
А заморачиваться все равно придется, и если практикуете метод, если вы практикуете столь любимые примеры из книг, когда данные из компонентов одной формы используете в другом модуле, то тоже придется от этого отказываться, т.к. это никудышный способ. Если говорить об не MDI приложениях, то 90% форм при правильном построении программы вы будите вызывать как ShowModal. Если кому-то интересно могу на примерах рассказать как обычно строю свои приложения. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
|
|||
|
||||
| Illusion Dolphin |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Хочу заметить по поводу кода:
Цитата из хелпа, хочу заметить что это серьёзно (сталкивался с проблемами если это не соблюдать):
Кто не понял, надо так:
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||||
|
|||||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
А в противном случае что будет с приложением? Просто всегда использовал и никогда ничего мне приложение не говорило о неверности действий... |
|||
|
||||
| Illusion Dolphin |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Столкнулся с этим когда создавал приложение с большим количеством форм, я Release нигде не писал и в какой-то момент начались глюки (похожи на ошибку работы с памятью - вроде всё всюду написано верно, но в некоторых местах вдруг происходят Access Violation'ы), после того как везде проставил Release глюки прошли. После этого стараюсь Release вызывать, т.к. хуже от всё равно не делает (но факт что без него в большинстве случаев всё работает без проблем).
А мне бы хотелось узнать про оставшиеся 10? -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Хорошо, я подготовлю -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Alex |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Что касается Release, то существует два метода: 1. Когда вы принудительно вызываете Release. 2. Если в событии OnClose уничтожаемой формы написать: Active:= caFree, то произойдет вызов того же Release
Теперь немного о том, что же такое Release. Release - это всего навсего отправка форме сообщения CM_RELEASE
Когда форма получает это сообщение, то она делает тот же самый Free
Вы можете спросить "Зачем я буду вызывать Release когда я сам могу вызвать Free?" Дело в том, что при отправке сообщения через PostMessage мы гарантируем, что оно попадет в конец очереди сообщений, а это означает, что до выполнения метода Free выполнятся все оставшиеся в очереди сообщения и все действия, которые должны были произойти при закрытии (уничтожении) формы будут гарантировано выполнены. -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
||||||
|
|||||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
|
|||
|
||||
| Sett |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 20.12.2004 Где: Подольск Репутация: нет Всего: нет |
Сколько примеров, надо обязательно всё попробовать!
Спасибо! |
|||
|
||||
| Гость_Гость |
|
||||
|
Unregistered |
Так подождите я чтото не понял как правильно делать:
Так
или так
Объяснити плиз. |
||||
|
|||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
MyFrom2.Release;
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |