Форум: "Начинающим";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];
ВнизНе убивается форма Найти похожие ветки
← →
neveGreen (2008-12-23 22:33) [0]Имеется код:
with TMyForm.Crate(Application) do
begin
try
ShowModal;
if ModalResult=Ok then
begin
Траляля;
end;
finally
Free;
end;
end;
Вроде так... На строке free ошибка - обращение к не тому адресу памяти.
Что может вызывать такую ошибку. Потом при вызове этого кода:
TMyForm_1 is already ecxist; и этот код уже не заработает. Может есть быстрый совет, потому что отслеживать что в ней твориться очень долго...
Заранее благодарю
← →
DVM © (2008-12-23 22:50) [1]
> neveGreen (23.12.08 22:33)
это нерабочий код
← →
DVM © (2008-12-23 22:58) [2]Так вот попроще будет:
with TMyForm.Create(Application) do
try
case ShowModal of
mrOK:
begin
//Траляля;
end;
mrCancel:
begin
//Траляля2;
end;
end;
finally
Free;
end;
Проблема не в этом коде, проблема в форме.
← →
neveGreen (2008-12-23 23:11) [3]Я убрал ее с автокрейта...
← →
Поросенок Винни-Пух © (2008-12-23 23:12) [4]а монитор протирал?
← →
Anatoly Podgoretsky © (2008-12-23 23:21) [5]> neveGreen (23.12.2008 22:33:00) [0]
Вот рабочий
begin
// Траляля;
end;
← →
neveGreen (2008-12-23 23:40) [6]
> Проблема не в этом коде, проблема в форме.
а что с формой не так?
← →
DVM © (2008-12-23 23:43) [7]
> а что с формой не так?
там в 17 строке ошибка
← →
Поросенок Винни-Пух © (2008-12-23 23:44) [8]а что с формой не так?
не в обиду, просто наблюдение из жизни.
самые тупые на земле - блондинки.
но еще тупее их - некоторые айтишники.
зы откуда нам здесь знать что с ней не так, если ни строчки кода никто не видел?
← →
neveGreen (2008-12-23 23:48) [9]ладно... а если спросить так: какие причины могут вызывать ошибку в операторе free, что вызывает ошибку экзиста формы при повторном запуске этого кода? я, например, думаю, что некоторые объекты созданные при работе формы не дестроятся, пол дня убив я проверил, что вроде все уничтожаются. Может вы знаете другие причины?
← →
DVM © (2008-12-23 23:56) [10]
> какие причины могут вызывать ошибку в операторе free
Какие угодно. Что на форме лежит? Что в коде при закрытии?
Сделай пустую форму, с ней такой же глюк? Нет? Тогда добавляй постепенно код и компоненты пока глюк не возникнет.
← →
Поросенок Винни-Пух © (2008-12-23 23:58) [11]А так?
finally
Application.ProcessMessages;
Free;
end;
← →
Германн © (2008-12-24 01:19) [12]
> Поросенок Винни-Пух © (23.12.08 23:58) [11]
>
> А так?
>
> finally
> Application.ProcessMessages;
О каком Application.ProcessMessages может идти речь в finally? Окстись Поросёнок.
← →
Сергей М. © (2008-12-24 08:37) [13]Да поди влупил в обработчик OnClose
Action := caFree
и ждет манны небесной
← →
Медвежонок Пятачок © (2008-12-24 09:21) [14]не, caFree привело бы просто к ав.
ну не в файнали, так где-нить перед убийством. а кстати почему не в файнали?
← →
Сергей М. © (2008-12-24 09:29) [15]
> caFree привело бы просто к ав
хз, мож у автора как раз AV и есть..
Под фривольной трактовкой "обращение к не тому адресу памяти" можно подразумевать все что угодно, вплоть до AV
← →
Медвежонок Пятачок © (2008-12-24 09:34) [16]там еще TMyForm_1 is already ecxist
← →
Сергей М. © (2008-12-24 09:37) [17]
> там еще TMyForm_1 is already ecxist
А это уже, видимо, из другой оперы
← →
{RASkov} © (2008-12-24 10:20) [18]> там еще TMyForm_1 is already ecxist
TMyForm_1 - это объект или все-таки класс?
Если объект, то скорее всего [13] и не нилится потом...
А для класса такая "ошибка"(сообщение) не реально.
← →
Медвежонок Пятачок © (2008-12-24 10:41) [19]это имя экземпляра конечно же.
← →
{RASkov} © (2008-12-24 11:12) [20]> [19] Медвежонок Пятачок © (24.12.08 10:41)
> это имя экземпляра конечно же.
Я тоже так-же подумал, но у автора-то создание формы:
> with TMyForm.Crate(Application) do
без переменной, тогда откуда:
> Потом при вызове этого кода:
> TMyForm_1 is already ecxist;
← →
Медвежонок Пятачок © (2008-12-24 11:19) [21]с переменной или без переменной создается экземпляр разницы же нет.
хотя ситуация странная именно из-за формы.
был бы неубитый фрейм, было бы понятно. но одноименные экземпляры форм-то создавать не возбраняется вроде
← →
neveGreen (2008-12-25 15:29) [22]Думаю не убиваются нормально объекты в этой форме... А можно как то перед "освобождением формы" убить созданные во время работы ее методов объекты?
← →
Сергей М. © (2008-12-25 15:34) [23]
> можно как то перед "освобождением формы" убить созданные
> во время работы ее методов объекты?
Можно, никто не против.
← →
neveGreen (2008-12-25 18:08) [24]
> Можно, никто не против.
а как это сделать, не вызывая явно деструкторы объектов?
← →
Медвежонок Пятачок © (2008-12-25 19:07) [25]"не вызывая явно" - это чтобы никто не заметил?
:)
← →
Сергей М. © (2008-12-25 19:27) [26]
> neveGreen (25.12.08 18:08) [24]
Надо знать матчасть.
А ты ее, судя по всему, не знаешь.
Да еще и кочевряжишься)
Тебе в [8] был дан намек, что без конкретного кода ничего конкретного сказать по твоей беде нельзя.
Ты что, блондинко ? Ты настолько туп, что не понимаешь этой элементарной вещи, да ?
← →
neveGreen (2008-12-25 21:39) [27]
> Сергей М. © (25.12.08 19:27) [26]
Ну на сколько я туп конечно не мне судить... И мат часть я не знаю досконально... Но я думаю, что гораздо бессмысленнее выкидывать сюда 10000 строк кода, чем спросить [22]... Могу лишь добавить, что все объекты формы не являются ее детьми... и спросить почему может выдавать такое сообщение с _1 если такого синтаксиса вообще в проекте нет? и какие вредные последствия могут быть если в этих объектах скрывается деструктор родителя TObject ?
← →
Сергей М. © (2008-12-26 09:36) [28]
> neveGreen (25.12.08 21:39) [27]
> почему может выдавать такое сообщение с _1
Там два сообщения:
> обращение к не тому адресу памяти
и
> TMyForm_1 is already ecxist
Ни одно из этих сообщений дословно в таком виде ты увидеть не мог, особенно первое.
> такого синтаксиса вообще в проекте нет
Какого такого "синтаксиса" ?
> какие вредные последствия могут быть если в этих объектах
> скрывается деструктор родителя TObject
Что значит "скрывается" ? Кем и зачем он "скрывается" ?
Если классом-предком действительно является TObject, то невызов его метода-деструктора в перекрытом методе деструкторе прямого его наследника ничем не грозит - тело виртуального метода TObject.Destroy не содержит ни единой строчки кода, это просто некая ничего не делающая "заглушка".
← →
neveGreen (2008-12-26 12:08) [29]method "Destroy" hides virtual method of base type "TObject"
← →
Сергей М. © (2008-12-26 12:10) [30]И что ?
← →
neveGreen (2008-12-26 12:30) [31]> какие вредные последствия могут быть если в этих объектах ?
← →
Сергей М. © (2008-12-26 12:43) [32]Нахреновертить в теле своего деструктора можно все что угодно.
Уж как нахреновертил, так и "вредные последствия" будут, вплоть до BSOD)
← →
Amoeba © (2008-12-26 19:24) [33]
> eveGreen (25.12.08 21:39) [27]
>
>
> > Сергей М. © (25.12.08 19:27) [26]
>
> Ну на сколько я туп конечно не мне судить... И мат часть
> я не знаю досконально... Но я думаю, что гораздо бессмысленнее
> выкидывать сюда 10000 строк кода, чем спросить [22]... Могу
> лишь добавить, что все объекты формы не являются ее детьми.
> .. и спросить почему может выдавать такое сообщение с _1
> если такого синтаксиса вообще в проекте нет? и какие вредные
> последствия могут быть если в этих объектах скрывается деструктор
> родителя TObject ?
Я плакалЪ! Нет слов!
← →
neveGreen (2008-12-26 23:05) [34]
> Amoeba © (26.12.08 19:24) [33]
Бугога. Баян, йоу. Ладно, всё хорошо, разберусь. Спасибо всем, особенно Сергей М., честно.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.005 c