Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Освободить память от переменной, Освободить память от переменной 
:(
    Опции темы
Сергейчик
Дата 11.7.2013, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



После того как создана глобальная переменная в форме1 и зарезерирована память под неё 
нужно чтобы при переходе на форму 2 очистить память от этой переменной
Собственно вопрос как это сделать ?
PM MAIL   Вверх
Dumm
Дата 12.7.2013, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я так понимаю, постановка задачи исключает описание переменной на уровне модуля?
PM MAIL   Вверх
Сергейчик
Дата 14.7.2013, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а можно код примера в модуле?
для этого нужно на каждую форму отдельный модуль?

PM MAIL   Вверх
Dumm
Дата 14.7.2013, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Форма тоже модуль. Специализированный. В общем-то, это модуль формы. И на уровне модуля формы, тоже можно создавать переменные.
PM MAIL   Вверх
Сергейчик
Дата 14.7.2013, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

PM MAIL   Вверх
Dumm
Дата 14.7.2013, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

только вот созданная переменная в одном модуле форме может быть одинаково именована и в другом модуле формы
без потери данных

Не понял, что значит без потери данных? Если ты переопределяешь переменную в другом модуле, то это уже другая переменная и никаких данных она изначально не содержит. Я так понимаю, ты хочешь просто при переходе на другую форму освобождать память от переменных предыдущей формы для экономии? Тогда уничтожай ненужную форму и память, под нее отведенная, очистится.
PM MAIL   Вверх
Сергейчик
Дата 15.7.2013, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



без потери данных это в  переменных на 1форме(можно конечно почистить но память всё также в резерве под них),новая да изначально очищенна.
да нужно  уничтожить невостребованную форму
только непонятно как запустить сночала 2 форму после убить первую.
PM MAIL   Вверх
Dumm
Дата 15.7.2013, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

'Форма 1
Private Sub Form_Load()
Form2.Show
End Sub

Код

'Форма 2
Private Sub Form_Load()
Unload Form1
Set Form1 = Nothing
End Sub

PM MAIL   Вверх
Сергейчик
Дата 15.7.2013, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нет это не работает переменная да очищается но память так и остаётся зарезервированная.
я думал что это как бы выход из приложения формы 1 и открыть приложение 2 с формой?
PM MAIL   Вверх
Сергейчик
Дата 15.7.2013, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дело даже может не в переменной вовсе так как сейчас на форме1 сделал текстбокс и кнопку перехода на форму2 и кнопку обратного перехода на форму1
так вот тупо копируя символы в тестбокс  t1 память растёт и после перехода на форму 2 память неполностью возвращается к первоначальному значению (смотрю в диспетчере задач после компиляции)
пробывал по разному, техтбокс первоначально очищаю так быстрей идёт процесс очистки
на первой форме:
Код

Private Sub Command1_Click()
Form2.Show '
Unload Form1
End Sub

Private Sub Form_Terminate()
 T1 = ""
 Set Form1 = Nothing
End Sub

Private Sub Form_Unload(Cancel As Integer)
T1 = ""
Set Form1 = Nothing
memory = "" 'может сюда какой указатель?
MsgBox "Unload формы1"
End Sub
на второй форме
Код

Private Sub Command1_Click()
Form1.Show 
Unload Form2
End Sub


Private Sub Form_Unload(Cancel As Integer)
 Set Form2 = Nothing
MsgBox "Unload формы2"
End Sub


Это сообщение отредактировал(а) Akina - 15.7.2013, 21:52
PM MAIL   Вверх
Akina
Дата 15.7.2013, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Сергейчик, научитесь описывать задачу, а не свои попытки её решить.

Чаще всего проблема состоит в том, что выбран неверный подход к решению задачи.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Сергейчик
Дата 15.7.2013, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача та мне вродеб как понятна
чтобы при переходе с одной формы на другую загружаясь она соответствовала точки начала приложения,свои глобальные переменные распространяемые на эту форму(не на приложение в целом) и свои объекты управления. соответственно предыдущая форма полностью 
уничтожена (соответствие точки выхода из программы и полностью освобождена память от её элементов)
вот отсюда и попытки её решения.

Это сообщение отредактировал(а) Сергейчик - 15.7.2013, 23:06
PM MAIL   Вверх
Akina
Дата 16.7.2013, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Сергейчик, Задача должна быть понятна не Вам, а тем, кто Вам будет отвечать. А вот из этого потока сознания
Цитата(Сергейчик @  16.7.2013,  00:05 Найти цитируемый пост)
чтобы при переходе с одной формы на другую загружаясь она соответствовала точки начала приложения,свои глобальные переменные распространяемые на эту форму(не на приложение в целом) и свои объекты управления. соответственно предыдущая форма полностью 
уничтожена (соответствие точки выхода из программы и полностью освобождена память от её элементов)

понять почти ничего нельзя. Кроме одной вещи - то, что Вы считаете задачей, на самом деле уже есть попытка её решить. Иными словами, задача не сильно понятна даже Вам.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Сергейчик
Дата 16.7.2013, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Другими словами чтобы форма работала подобием процедуры и при закрытии её полностью всё что сней связано удалялось .
или программа как бы с вложенной программой ввиде отдельной формы и всё что сней связано(формой).
при переходе на другую форму означает закрытие вложенной программы и начало другой.

К примеру запустите диспетчер задач и виндовс  калькулятор понабирайте что небудь справку посмотрите попереходите на различные 
его формы(может там конечно и одна с изменением) и вы увидите что память постоянно растёт(выделяется под эту программу)
далее запустите программу блокнот откройте какой небудь файл накопируйте мегабайт на 150 после создайте новый файл и вы увидите
что память полностью не разгрузилась.
Вот я хотел бы сделать программу подобие калькулятора с разными формами различных расчётов а также формой с загрузкой файла
но только зачем мне лишняя невыгруженная память ведь допустим в новой форме всего пару формул и те в процедуре?  smile 


Это сообщение отредактировал(а) Сергейчик - 16.7.2013, 19:18
PM MAIL   Вверх
Akina
Дата 16.7.2013, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(Сергейчик @  16.7.2013,  20:15 Найти цитируемый пост)
чтобы форма работала подобием процедуры и при закрытии её полностью всё что сней связано удалялось .

Выгрузка (не закрытие!) формы приводит к уничтожению всех связанных с ней данных - в т.ч. и переменных, определённых на уровне модуля класса этой формы или ниже.

Цитата(Сергейчик @  16.7.2013,  20:15 Найти цитируемый пост)
вы увидите что память полностью не разгрузилась.

Цитата(Сергейчик @  16.7.2013,  20:15 Найти цитируемый пост)
зачем мне лишняя невыгруженная память 

Этих фраз я в принципе не понял. Хотя и слова вроде все знакомые, но вот смысла - как есть ноль...




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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