Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 415

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
У меня такая проблема. При клике на объект вызывается процедура отчищающая массив объектов, в котором находится и злополучный объект.
Долго бился башкой из за чего вылетает Abstract Error, и допёр, что удаляется используемый объект!
Удалить объект нужно по любому, помогите пожалуйста.

Алексей Никитин Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Алексей Никитин (статус: 1-ый класс)
Вопрос отправлен: 18 ноября 2009, 21:34
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 18 ноября 2009, 22:15; участников в обсуждении: 4.
Алексей Никитин

Алексей Никитин (статус: 1-ый класс), 18 ноября 2009, 21:43 [#1]:

Прошу прощения за несвязность речи.
В общем проблема в том чтобы удалить компонент, после клика по нему-же.
Егор

Егор (статус: 10-ый класс), 18 ноября 2009, 21:52 [#2]:

код-то покажь, а то нифига не понятно
если объект удаляется, и должен удаляться, то в чём проблема-то?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
min@y™

min@y™ (статус: Доктор наук), 18 ноября 2009, 21:53 [#3]:

Ну давай показывай, что и как ты удаляешь. Я вот тут взял форму, положил на неё 3 кнопки и создал для них вот такой обработчик OnClick:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Sender.Free();
end;
Всё прекрасно работает, никаких ошибок.
Колись давай, как делаешь!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Егор

Егор (статус: 10-ый класс), 18 ноября 2009, 22:06 [#4]:

а если на этот же обработчик навесить щелчок по форме?...
гыыыы :)
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Вадим К

Вадим К (статус: Академик), 18 ноября 2009, 22:08 [#5]:

во первых Abstract error возникает немного в другом случае.
во вторых, удалять объект в его же обработчике - потенциальное UB. То есть, надо делать это осознанно. Да, в примере min@y™ это будет работать, но в чуточку сложном - вылезет боком. и ещё каким.
min@y™ , плохой код, у нас выгоняют за такой код.

В целом, код в студию, тогда и подскажем хорошее решение.
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 18 ноября 2009, 22:11 [#6]:

Цитата (Вадим К):

плохой код, у нас выгоняют за такой код.


А у нас никто такой код и не пишет.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 18 ноября 2009, 22:12 [#7]:

а кто его выше написал???
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 18 ноября 2009, 22:13 [#8]:

Abstract Error вылезает при попытке вызвать абстрактный метод объекта или при попытке положить абстракный компонент на форму.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 18 ноября 2009, 22:15 [#9]:

Цитата (Вадим К):

а кто его выше написал???

А это был эксперимент.
Я такой код в реальной жизни не пишу и вообще у меня таких задач быть не может.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:28
Выполнено за 0.02 сек.