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

Вниз

Abstact error   Найти похожие ветки 

 
Andrew   (2004-06-10 19:05) [0]

Привет!
Подскажите кто сталкивался/боролся с сабжем?
ситуация:
Две формы, Первая создается при запуске, вторая по нажатию кнопочки( form1.Hide;
         form2 := tform2.create(form1);
         form2.show;
)
на второй три кнопки(button1,2,3)
onClick у каждой один и тот же:

procedure TForm2.Button1Click(Sender: TObject);
begin
form1.show;
free;
end;

А реакция программы:
- на первую кнопку такая как и предполагалась(форма два закрылась и первая появилась)
- а вот на второю и третью тоже то самое но еще плюс сообщение об ошибке "Abstract error" - ужасть какой то!!!!
причем эта ошибка появляется при увиличении на второй форме количества кнопок до 3-х, с двумя все нормально.
Я бы отказался от третей и забыл, но "непорядочек все же"(С)
Не сможет ли кто подсказать причину ошибки?


 
Гаврила ©   (2004-06-10 19:07) [1]

procedure TForm2.Button1Click(Sender: TObject);
begin
form1.show;
free;
end;

Не разрушай так в своем методе, это есь неправильно.
В данном случае можно попробовать заменить Free на Release


 
Ihor Osov'yak ©   (2004-06-10 19:24) [2]

2 [1] Гаврила ©   (10.06.04 19:07)

Чисто из религиозных убеждений я бы вместо Release в этом случае написал бы
PostMessage(Handle, WM_Close, 0, 0);
а в обработчике TForm2.FormClose
сказал-бы Action := caFree;

Да и от переменной form2 избавился бы - она здесь тысячу лет нужна (вспоминаем  о with), и от греха подальше..


 
Petr V. Abramov ©   (2004-06-10 19:41) [3]

> сообщение об ошибке "Abstract error"

 TMyClass = class(TSomeClass)
 ....
   procedure AbstractProc; virtual; abstract;
 end;

var
 A: TMyClass;
begin
 .....
 A.AbstractProc; // вот здесь будет ошибка
end;
ищите что-то похожее в коде


 
Гаврила ©   (2004-06-10 22:11) [4]

>>Ihor Osov"yak ©   (10.06.04 19:24) [2]
По сути, это то же самое

>>Petr V. Abramov ©   (10.06.04 19:41) [3]
Исходя из описания ситуации автором вопроса, можно предположить, что непереопределенные абстрактные методы отсутствуют. Скорее всего, такой результат является причиной порчи памяти при неправильном разрушении формы


 
Глеб ©   (2004-06-11 04:38) [5]


> Две формы, Первая создается при запуске, вторая по нажатию
> кнопочки( form1.Hide;
>          form2 := tform2.create(form1);
>          form2.show;)

Попробуй делать не create(form1), а create(application)


 
Andrew   (2004-06-11 10:15) [6]

Спасибо всем!
Не ожидал что когото это заинтересует.
2Глеб: Application не помог........
2Гаврила и Ihor Osov"yak: РАБОТАЕТ!!!!!!!!!!!! и то и другое;
Спасибо ОГРОМНОЕ всем отозвавшимся!!!!!!



Страницы: 1 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
3-1085745467
half_litre
2004-05-28 15:57
2004.06.27
MultiThread доступ


14-1086901864
Profi
2004-06-11 01:11
2004.06.27
Разработка софта


1-1086870408
Андрей
2004-06-10 16:26
2004.06.27
Управление другой программой


14-1086619909
wl
2004-06-07 18:51
2004.06.27
Где можно достать реферат


14-1086540528
iZEN
2004-06-06 20:48
2004.06.27
Документы в электронном виде, или как сохранить книгу.