Показать сообщение отдельно
  #16  
Старый 16.08.2012, 14:16
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от poli-smen
В какой версии Delphi? У меня в Delphi 7 не проверяет:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  pn, pn2, pn3: TPanel;
begin
  pn:=TPanel.Create(nil);

  pn2:=TPanel.Create(nil);
  pn3:=TPanel.Create(nil);

  pn2.InsertComponent(pn);
  pn3.InsertComponent(pn);

  pn2.Free;
  pn3.Free;
end;
Выдаёт ошибку: Access violation at address 00000000. Read of address 00000000.



XE
Код:
procedure TComponent.InsertComponent(AComponent: TComponent);
begin
  AComponent.ValidateContainer(Self);
  if AComponent.FOwner <> nil then
    AComponent.FOwner.RemoveComponent(AComponent);
  ValidateRename(AComponent, '', AComponent.FName);
  Insert(AComponent);
  AComponent.SetReference(True);
  if csDesigning in ComponentState then
    AComponent.SetDesigning(True);
  Notification(AComponent, opInsert);
end;

и приведенный код не валится.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием