Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c