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

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

Странность в Delphi 2005


Чапаев ©   (2005-10-25 10:54:00) 

Есть такой код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TMy=class(TWinControl)
 private
   AEdit:TEdit;
   ALabel:TLabel;
 public
   constructor Create(AOwner:TComponent);override;
   destructor Destroy;override;
 end;
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   M:TMy;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 M:=TMy.Create(Self);
end;

{ TMy }

constructor TMy.Create(AOwner:TComponent);
begin
 inherited;
 AEdit:=TEdit.Create(nil);
 ALabel:=TLabel.Create(nil);
end;

destructor TMy.Destroy;
begin
 AEdit.Free;
 ALabel.Free;
 inherited;
end;

end.



В Делфи7 всё работает, в Делфи2005 выскакивает AV при выполнении AEdit.Free. Кто-нить может объяснить, в чём проблема?


Игорь Шевченко   (2005-10-25 15:35:00) [1]


> в Делфи2005 выскакивает AV при выполнении AEdit.Free


Не выскакивает.


Igorek   (2005-10-25 12:16:00) [2]


> Не знаешь -- лучше не подсказывай.

Прости, я хотел помочь - написал что знал.. Но теперь думаю - без меня ты лучше разберешься.


Чапаев   (2005-10-25 12:10:00) [3]

Да и если всё же принять версию про автоматическую сборку мусора, почему тогда ALabel.Free срабатывает нормально?


Чапаев   (2005-10-25 12:07:00) [4]


> Так 2005 Делфи - это ж под дотнет вроде

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


Igorek   (2005-10-25 11:02:00) [5]

Так 2005 Делфи - это ж под дотнет вроде. Там же автоматическая сборка мусора. Соотв. нету явных вызовов деструкторов - можно просто написать AEdit := nil вместо AEdit.Free.


Наверх

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