![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| FactoREAL |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 10.1.2009 Репутация: нет Всего: нет |
сложно будет объяснить, но постараюсь что бы вы поняли суть моей проблемы. хотя я сам если честно так и не понял в чём именно проблема =)
Необходимо на лету создавать форму(Form 3) из другой формы (Form2) при нажатии на кнопку. На этой форме(на создаваемой) находится много компонентов ShockWaveFlash. так же в программе объявлена глобальная переменная adres:=extractFilePath(application.ExeName); она используется компонентами ShockWaveFlash для загрузки в них флеш файлов из папки. Но после убивания Form3 с помощью Free, возникает ошибка, мол неверное обращение к памяти...AcessViolationControl бла бла бла(ошибка возникает не обязательно при следующем создании формы, может возникнуть и на 3 и на 5 запуск формы3.. вообще как то хаотично) вот примерно так это всё реализованно:
извините, просто там очень много кода, написал коротенько и вроде что б понятно было. трабла как то связана с переменной adres. её приходится тыкать в совершенно ненужных местах, ошибки чудесным образом перестают выскакивать там, но всплывают в других местах о_О И ещё удаётся выйти из ситуации, в процессе выполнения программы в Delphi ошибок нет, но при использовании скопиленого ехе'шника ошибки почему то есть (( вообще ничего не пойму. Помогите плиз, вторые сутки мозг ломаю. |
||||
|
|||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
А зачем в TForm3.FormClose вызывается ResetComponents ?
|
|||
|
||||
| FactoREAL |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 10.1.2009 Репутация: нет Всего: нет |
да вот сам не понимаю.. это я уже буквально методом тыка подставлял и adres и ResetComponents. просто в некоторых случаях когда перед закрытием выполняется эта процедура ошибок меньше. та же самая басня и с adres. их там вообще во многих местах не надо писать, но если не написать, ошибка эта. например при выполнении ResetComponents в теле самой процедуры уже выполняется поиск адреса(adres), но в некоторых случаях, что бы не было ошибки приходится ещё перед выполнением процедуры узнавать этот адрес. хотя он уже программе известен, и так же перед закрытием приходилось писать этот адрес, хотя и там он не нужен по идее. он вообще должен при создании формы единожды определяться. не понимаю вообще... О_о Я почти уверен что касяк мой какой то очень банальный и глупый, но не могу я найти в чём касяк ( |
|||
|
||||
| Frees |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
ты в методе класса убеваеш свой же экземпляр!! нельзя так у тебя MDI если да то
если не MDI то
-------------------- Кольцов Виктор Владимирович |
||||||
|
|||||||
| FactoREAL |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 10.1.2009 Репутация: нет Всего: нет |
Frees , приложение не MDI но вот "убивать" Форму3 желательно именно при закрытии этой формы, а не при закрытии Формы2 потому что Form2 остаётся открытой постоянно, только скрывается при создании Form3. Form3 убивается с целью освобождения памяти, т.к. она жрёт её очень много, и таких форм 2 штуки. Вот и хотелось бы освобождать одну их них перед открытием второй. А Form2 служит для открытия одной из этих форм.
|
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
не подойдет? -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
хотя
так форма тоже освободится по закрытию, вроде -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| NosfBlazE |
|
|||
![]() 炎丸 =Ferro ignique!= ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 16.11.2008 Где: Russia Репутация: нет Всего: нет |
Кстати, может кто-нибудь подскажет, можно как-нибудь вернуть начальные значения/параметры формы, которые были при первом ее создании, без того, чтобы заводить переменные, которые хранят эти начальные значения/параметры?
Простой пример: - Есть 2 формы F1 и F2. У F2 через Инспектор объектов установлен начальный ее цвет, к примеру, Синий. На F1 есть Button, при нажатии на который вызывается форма F2. На форме F2 есть ColorBox, который меняет ее цвет. - Итак, мы на F1 жмем Button и вызываем F2. Появляется F2 Синего цвета. Меняем цвет F2, например, на Красный. Далее закрываем форму F2. После этого снова вызываем F2 нажатием на форме F1 на Button. Появляется F2, но теперь ее цвет Красный. Так вот, необходимо, чтобы при повторном вызове формы F2 ее цвет был Синий, а не Красный. Я понимаю, что можно завести переменную, которая хранит начальное значение, а при закрытии F2 просто с помощью этой переменной возвращать исходное значение. Но что если таких значение очень много и иногда мне надо их сохранить, а иногда вернуть значения по умолчанию. Как быть в таком случае? Можно как-то возвращать значения по умолчанию с помощью пересоздания формы? P.S. Написал, конечно, кое-как, но вроде суть передал.))) Это, чтобы отдельную тему не создавать, тем более тематика вроде схожая. |
|||
|
||||
| FactoREAL |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 10.1.2009 Репутация: нет Всего: нет |
ооой. ужас. а меня ещё и настараживала хаотичность появления ошибок... не знаю возможно ли такое, но я думаю что проблема была в слабости моего компьютера
я написал вот так, полёт нормальный. Плохо конечно то, что программа будет работать на таких же слабых компах как и у меня. Ну теперь буду пробовать оптимизировать ПС. Frees, извини плюс поставить не могу Это сообщение отредактировал(а) FactoREAL - 11.1.2009, 16:44 |
|||
|
||||
![]()
|
| Правила форума "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. |