Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему нет ошибки? [D7]


Страницы:   1 2

мскл ©   (2008-02-06 12:38:00) 

Разбираюсь с классами. Уровень начинающий. Возник вопрос, есть такой код:

procedure TForm1.Button1Click(Sender: TObject);
var
 b1, b2, b3: TButton;
begin
 b1.Free;
 b1 := TButton.Create(Self);
 b3 := TButton.Create(Self);
 ShowMessage('b1 = 0x' + IntToHex(Integer(b1), 8));
 b2 := b1;
 ShowMessage('b2 = 0x' + IntToHex(Integer(b2), 8));
 ShowMessage('b3 = 0x' + IntToHex(Integer(b3), 8));
end;


Почему в таком случае не возникает ошибки на выделенном месте: я же пытаюсь уничтожить ещё не созданный объект?

И ещё вопрос про такой фокус - не создаем b3, оставшийся код без изменений, получаем "Abstract error":

var
 b1, b2, b3: TButton;
begin
 b1.Free;
 b1 := TButton.Create(Self);
//  b3 := TButton.Create(Self);
 ShowMessage('b1 = 0x' + IntToHex(Integer(b1), 8));
 b2 := b1;
 ShowMessage('b2 = 0x' + IntToHex(Integer(b2), 8));
 ShowMessage('b3 = 0x' + IntToHex(Integer(b3), 8));


Потом убираем из модифициорванного кода уничтожение не созданного b1, исчезает ошибка:
var
 b1, b2, b3: TButton;
begin
//  b1.Free;
 b1 := TButton.Create(Self);
//  b3 := TButton.Create(Self);
 ShowMessage('b1 = 0x' + IntToHex(Integer(b1), 8));
 b2 := b1;
 ShowMessage('b2 = 0x' + IntToHex(Integer(b2), 8));
 ShowMessage('b3 = 0x' + IntToHex(Integer(b3), 8));


Как это называется?


ANB   (2008-02-06 12:49:00) [21]

Посмотри код фрее. У приятно удивись, что он ничего не делает, если ссылка на объект ниловая.


Leonid Troyanovsky   (2008-02-06 12:45:00) [22]


> мскл   (06.02.08 12:38)  

> Как это называется?

Огласи цель исследований.

--
Regards, LVT.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо