![]() |
|
#1
|
|||
|
|||
![]() Доброго времени суток.
Есть форма в которой динамически создается массив edit-ов. Производится расчет. Далее форма закрывается. При закрытии формы выдается ошибка памяти типа "Access violation at address XXXXXXX in module XXXX. Read of address 00000000" После долгих переборов вывел что все дело в MatrEnd.free; Что я упустил? Код: Код:
|
#2
|
||||
|
||||
![]() если честно, редко пользуюсь ручным уничтожением. я бы убрал вообще из Close эти две строчки.
MatrEnd.free; MatrEnd:=nil; Я думаю система сама от них ресурсы освободит как надо.... |
#3
|
|||
|
|||
![]() У меня вообще очень странная штука происходит.
Если я их убираю то программа дальше работает. Но при изменении некоторых параметров MainForm Опять начинается... Я уже всю голову сломал Читал, что для удаления Free надо в FormCreate дописать создание MatrEnd. Но по примеру у меня не получается. Хотя.. сейчас прошелся по всему коду и нашел в кнопке MatrEnd.free; Удалил.. Пока вроде все пашет ) Но все же хотелось бы понять почему ))))))))) Ведь отстранение от проблемы это не ее решение. Последний раз редактировалось defff1, 23.03.2011 в 22:19. |
#4
|
||||
|
||||
![]() а каким образом ты форму закрываешь???
|
#5
|
|||
|
|||
![]() так как нет никаких кнопок закрытия и менюшек то
просто тыкаю на крестик. |
#6
|
||||
|
||||
![]() хрен знает, у тебя эта форма главная или дочерняя, что за форма form1??
|
#7
|
|||
|
|||
![]() Form1 это MainForm
Нашел еще MatrEnd.Destroy; тоже не помогло. |
#8
|
||||
|
||||
![]() надо сам исходник смотреть....
|
#9
|
|||
|
|||
![]() Попробуй их местами поменять...
Код:
|
#10
|
||||
|
||||
![]() Если форма не была создана "вручную", то TApplication сам освободит ресурсы. Если ты создавал форму самостоятельно - то и удаляй ее самостоятельно. Но уж НИ В КОЕМ СЛУЧАЕ нельзя освобождать объект внутри обработчика события этого объекта.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#11
|
|||
|
|||
![]() Спасибо всем. Учту свою ошибку.
|