Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.006 c
2-1229991567
vinpol
2008-12-23 03:19
2009.02.08
динамические структуры


15-1229002101
Ru
2008-12-11 16:28
2009.02.08
PGP Virtual Disk


2-1230052098
neone
2008-12-23 20:08
2009.02.08
Матрица


15-1229203553
Riply
2008-12-14 00:25
2009.02.08
Хочу сказать спасибо :)


2-1229329791
yurik85
2008-12-15 11:29
2009.02.08
Работа с Word





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский