Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.08.2011, 03:22
Metal Metal вне форума
Прохожий
 
Регистрация: 22.07.2011
Сообщения: 11
Версия Delphi: 7, XE
Репутация: 10
По умолчанию Как убить форму?

Есть приложение на две формы. Первая - всегда в инвизе, выполняет свою работу в фоновом режиме. Вторая форма используется для настройки программы и содержит весь интерфейс, она подключена к первой через uses и каждый раз создается при необходимости (первая обрабатывает клики по иконке в трее).

Вопрос: как сделать так, чтобы вторая форма при ее закрытии выгружалась из памяти? Весит она больше половины всего приложения, нужна редко, а оперативку кушает.
Ответить с цитированием
  #2  
Старый 17.08.2011, 07:27
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Не криэйтить ее при инициализации приложения.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 17.08.2011, 08:13
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

1. для обработки сообщений Shell_NotifyIcon лучше, имхо, использовать окно, чем целую VCL форму
Цитата:
function AllocateHWnd(Method: TWndMethod): HWND;
2. убрать TFormSetup из autocreate forms и:
Код:
  FormSetup:=TFormSetup.Create(Application);
  FormSetup.ShowModal;
  FormSetup.Free;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 17.08.2011, 20:05
Metal Metal вне форума
Прохожий
 
Регистрация: 22.07.2011
Сообщения: 11
Версия Delphi: 7, XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Не криэйтить ее при инициализации приложения.

Не криэйчу. Из project.dpr удалил. Но как только прописываешь в uses первой формы сразу она вся сидит в памяти и никакие FreeAndNil не помогают (

Цитата:
Сообщение от NumLock
1. для обработки сообщений Shell_NotifyIcon лучше, имхо, использовать окно, чем целую VCL форму

2. убрать TFormSetup из autocreate forms и:

1. Ну первая форма на самом деле много полезного делает, по сути, все полезное действие программы в ней.

2. Из аутокриэйта убрал, код так и был.

С созданием формы то все ясно. И программа ДО ее создания занимает положенные очень мало килобайт. Вопрос в том, почему когда я форму уничтожаю объем занимаемой памяти обратно не падает (к объему до создания формы) и как это исправить.
Ответить с цитированием
  #5  
Старый 18.08.2011, 01:09
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

То что объем памяти не падает - это фича ММ от борланда истчо.
А как съэкономить ресурсы... Паралельные потоки (TThread) помогут гиганту мысли.... Даже ЗЫЖ писать не буду... лениво...
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #6  
Старый 18.08.2011, 01:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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

Хотя это не принципиально. При необходимости в памяти винда сама отберет все лишнее у разных процессов.
Ответить с цитированием
  #7  
Старый 18.08.2011, 23:10
Metal Metal вне форума
Прохожий
 
Регистрация: 22.07.2011
Сообщения: 11
Версия Delphi: 7, XE
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
То что объем памяти не падает - это фича ММ от борланда истчо.
А как съэкономить ресурсы... Паралельные потоки (TThread) помогут гиганту мысли.... Даже ЗЫЖ писать не буду... лениво...

Потоки - это, кстати, идея, но хочется проще).

Цитата:
Сообщение от lmikle
Есть спец. вызов API, заставляющий отобрать у процесса всю неиспользуемую память.

Интересно, что за вызов?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025