Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.08;
Скачать: CL | DM;

Вниз

Не убивается форма   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.015 c
15-1229069695
Slider007
2008-12-12 11:14
2009.02.08
С днем рождения ! 12 декабря 2008 пятница


15-1229025972
evil_mike
2008-12-11 23:06
2009.02.08
Как создать несколько окон одной игры?


4-1204690650
soi.hash
2008-03-05 07:17
2009.02.08
Multimedia Keys


2-1230381853
smi
2008-12-27 15:44
2009.02.08
Маскировка


15-1229422288
cosinus
2008-12-16 13:11
2009.02.08
Вопрос про базы данных... Ламерский.