![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
После того как создана глобальная переменная в форме1 и зарезерирована память под неё
нужно чтобы при переходе на форму 2 очистить память от этой переменной Собственно вопрос как это сделать ? |
|||
|
||||
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Я так понимаю, постановка задачи исключает описание переменной на уровне модуля?
|
|||
|
||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
а можно код примера в модуле?
для этого нужно на каждую форму отдельный модуль? |
|||
|
||||
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Форма тоже модуль. Специализированный. В общем-то, это модуль формы. И на уровне модуля формы, тоже можно создавать переменные.
|
|||
|
||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
только вот созданная переменная в одном модуле форме может быть одинаково именована и в другом модуле формы
без потери данных,значит они в разных ячейках памяти. и переменные каждый раз резервируют под себя память только на второй форме допустим они мне не нужны в таком количестве или вовсе ненужны и надо память очистить от них |
|||
|
||||
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Не понял, что значит без потери данных? Если ты переопределяешь переменную в другом модуле, то это уже другая переменная и никаких данных она изначально не содержит. Я так понимаю, ты хочешь просто при переходе на другую форму освобождать память от переменных предыдущей формы для экономии? Тогда уничтожай ненужную форму и память, под нее отведенная, очистится. |
|||
|
||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
без потери данных это в переменных на 1форме(можно конечно почистить но память всё также в резерве под них),новая да изначально очищенна.
да нужно уничтожить невостребованную форму только непонятно как запустить сночала 2 форму после убить первую. |
|||
|
||||
Dumm |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
|
||||
|
|||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
Нет это не работает переменная да очищается но память так и остаётся зарезервированная.
я думал что это как бы выход из приложения формы 1 и открыть приложение 2 с формой? |
|||
|
||||
Сергейчик |
|
||||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
Дело даже может не в переменной вовсе так как сейчас на форме1 сделал текстбокс и кнопку перехода на форму2 и кнопку обратного перехода на форму1
так вот тупо копируя символы в тестбокс t1 память растёт и после перехода на форму 2 память неполностью возвращается к первоначальному значению (смотрю в диспетчере задач после компиляции) пробывал по разному, техтбокс первоначально очищаю так быстрей идёт процесс очистки на первой форме:
Это сообщение отредактировал(а) Akina - 15.7.2013, 21:52 |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Сергейчик, научитесь описывать задачу, а не свои попытки её решить.
Чаще всего проблема состоит в том, что выбран неверный подход к решению задачи. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
Задача та мне вродеб как понятна
чтобы при переходе с одной формы на другую загружаясь она соответствовала точки начала приложения,свои глобальные переменные распространяемые на эту форму(не на приложение в целом) и свои объекты управления. соответственно предыдущая форма полностью уничтожена (соответствие точки выхода из программы и полностью освобождена память от её элементов) вот отсюда и попытки её решения. Это сообщение отредактировал(а) Сергейчик - 15.7.2013, 23:06 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Сергейчик, Задача должна быть понятна не Вам, а тем, кто Вам будет отвечать. А вот из этого потока сознания
понять почти ничего нельзя. Кроме одной вещи - то, что Вы считаете задачей, на самом деле уже есть попытка её решить. Иными словами, задача не сильно понятна даже Вам. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
Другими словами чтобы форма работала подобием процедуры и при закрытии её полностью всё что сней связано удалялось .
или программа как бы с вложенной программой ввиде отдельной формы и всё что сней связано(формой). при переходе на другую форму означает закрытие вложенной программы и начало другой. К примеру запустите диспетчер задач и виндовс калькулятор понабирайте что небудь справку посмотрите попереходите на различные его формы(может там конечно и одна с изменением) и вы увидите что память постоянно растёт(выделяется под эту программу) далее запустите программу блокнот откройте какой небудь файл накопируйте мегабайт на 150 после создайте новый файл и вы увидите что память полностью не разгрузилась. Вот я хотел бы сделать программу подобие калькулятора с разными формами различных расчётов а также формой с загрузкой файла но только зачем мне лишняя невыгруженная память ведь допустим в новой форме всего пару формул и те в процедуре? ![]() Это сообщение отредактировал(а) Сергейчик - 16.7.2013, 19:18 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Выгрузка (не закрытие!) формы приводит к уничтожению всех связанных с ней данных - в т.ч. и переменных, определённых на уровне модуля класса этой формы или ниже. Этих фраз я в принципе не понял. Хотя и слова вроде все знакомые, но вот смысла - как есть ноль... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Dumm |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 11.7.2010 Репутация: 1 Всего: 1 |
Я бы не стал безоговорочно доверять диспетчеру задач в таком деле, как точная оценка памяти, занимаемой приложением. Именно в процессе освобождения ресурсов приложением. Хотя обоснований не привожу. |
|||
|
||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
Смысл в том что открыли вы например справку автора программы ваша память зарезервировалась под этот процесс. далее вы закрыли справку и больше неоткроете её вовсе а память так и осталась невыгруженна и дальнейшая ваша работа идёт с этим резервом под этот процесс показа справки хотя вы ею больше и непользуетесь.а память занята непонятно чем? также и с формами и т.д. и естественно эта область памяти недоступна для других программ. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
А если второй раз открыть эту "справку автора программы" - ещё откусывается память? а если третий раз открыть? А если выгрузить программу (всю), запустить заново и снова открывать эту "справку" - каждый раз резервируется и не отдаётся память? Если да - то это называется утечка памяти и является следствием программной ошибки. Чаще ошибка кода, реже ошибка используемой библиотеки или там фреймворка. Если же повторные запуски больше не приводят к резервированию и невозвращению памяти - то Вам рано думать о таких вещах. Знаний нехватает. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Сергейчик |
|
||||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
Да не хватает в этом вопросе отсюда и вопросы для прояснения этой проблемы! а думать, фонтазировать,мечтать и т.д. это уже внутренняя антагонизма и не вам решать эту Абстракцию. Но и от вас ноль пользы только критика и нечего более,которая прослеживается не только на этом форуме. а прежде чем задавать вопросы про открытие и закрытие могли бы и сами это сделать! а ждать результат и им оперировать в дольнейшем дурак сможет. ![]() Это сообщение отредактировал(а) Сергейчик - 17.7.2013, 19:04 |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Что-то Вы, батенька, туповаты... не могу я это сделать на ВАШЕЙ системе и с ВАШИМ приложением. Вот у себя и со своими приложениями - могу. Но тут я и без запусков почти всегда знаю, сколько памяти будет использовано при первом открытии, сколько при втором и последующих. Очень редко случается так, что приложение ведёт себя не так, как я ожидаю - тогда я ищу, где ошибка, и исправляю её, если это в пределах моей компетенции. А мне глубоко начхать. Обычно я стараюсь навести автора вопроса на путь, идя по которому, он сам решит свою проблему. Ну а кто настроен топырить пальцы и ждать готового решения - пусть так и ждёт с растопыренными пальцами. Авось дождётся. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Сергейчик |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.5.2013 Репутация: нет Всего: нет |
Поздравляю вас что вы с своими приложениями умнее тех кто написал выше перечисленное!
но тут как бы обсуждение VB6 а не ваших инструментов. На сколько вы уверенны что этот путь будет верным и цель достигнута? ![]() да и где точка отправления ведь вы же говорите что на VB6 это тупик и цель недосягаема? Это сообщение отредактировал(а) Сергейчик - 24.7.2013, 16:28 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Тут не обсуждение VB6, а открытая демонстрация незнания того, как именно запускаются, работают и взаимодействуют между собой приложение и используемые им внешние ресурсы - динамические библиотеки, COM- и DDE-серверы и пр... Да даже со временем жизни и (взаимной) видимостью различных объектов внутри приложения Вы пока имхо плохо ориентируетесь. Поиск и изучение информации о всём вышеперечисленном. Цель? Я пока не вижу постановки задачи. Соответственно, и цели тоже не вижу. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |