![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странность в 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.