Главная страница
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.022 c
1-1086767051
AleXqwq
2004-06-09 11:44
2004.06.27
how to use help


14-1086759922
Andrey007
2004-06-09 09:45
2004.06.27
Плавающее Access Violation


1-1087275595
try
2004-06-15 08:59
2004.06.27
Извлечение имени папки диска


14-1086870125
*Pavel
2004-06-10 16:22
2004.06.27
Принтеры штрихкодов


9-1078412723
AlexXn
2004-03-04 18:05
2004.06.27
Перемещение Image