Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

Локальные объекты   Найти похожие ветки 

 
Ш-К   (2006-09-22 12:11) [0]

Наткнулся на такой код:

procedure TClient.SampleOperation;
var
 Builder :TConcreteBuilder;
 Product :IProduct;
begin
   Builder := TConcreteBuilder.Create();
   TDirector.Create(Builder).Construct();
   Product := Builder.GetResult();
end;

С какой версии Delphi стало возможным не дестроить локальные объекты принудительно?


 
StriderMan ©   (2006-09-22 12:27) [1]

скорее всего ответ тут:

> Product :IProduct


когда кол-во ссылок на объект станет равным нулю (а это случится по выходу из процедуры), он сам себя пристрелит.


 
Ega23 ©   (2006-09-22 12:28) [2]


> С какой версии Delphi стало возможным не дестроить локальные
> объекты принудительно?


Лучше скажи, когда это Делфи убивал локальные объекты принудительно?


 
Ш-К   (2006-09-22 12:52) [3]

Так убивает или не убивает?
Этот код генерится в BDS2006 по применению паттерна Builder.
Может генератор не видит разницы между Win32 | .Net


 
ЮЮ ©   (2006-09-22 12:53) [4]


> С какой версии Delphi стало возможным не дестроить локальные
> объекты принудительно?

Это было возможно всегда и называлось утечкой памяти :)


 
StriderMan ©   (2006-09-22 12:55) [5]


> Builder.GetResult();

может там деструктор вызываецо?


 
Ega23 ©   (2006-09-22 12:59) [6]

У меня больше удивлений вот это вызывает: TDirector.Create(Builder).Construct();


 
StriderMan ©   (2006-09-22 13:02) [7]


> Ega23 ©   (22.09.06 12:59) [6]
> У меня больше удивлений вот это вызывает: TDirector.Create(Builder).
> Construct();

а что тут такого?


 
ЮЮ ©   (2006-09-22 13:05) [8]

вот до чего довела .NET такой всегда строгий Object Pascal :(


 
Ш-К   (2006-09-22 13:06) [9]


> > Builder.GetResult();
>
> может там деструктор вызываецо?

Не вызывается. А если бы вызывался, как бы TDirector.Create убился.


 
StriderMan ©   (2006-09-22 13:33) [10]


> А если бы вызывался, как бы TDirector.Create убился.

нормально бы убился, как например

TSomeControl.Create(Form1).Parent := Form1;

тоже пристрелицца при разрушении формы


 
Ega23 ©   (2006-09-22 13:38) [11]


> а что тут такого?


Да как-то не вписывается в общий стиль... Можно, но как-то не принято...


 
Игорь Шевченко ©   (2006-09-22 13:43) [12]


> С какой версии Delphi стало возможным не дестроить локальные
> объекты принудительно?


По-моему, с четвертой.


 
Ш-К   (2006-09-28 13:04) [13]


> По-моему, с четвертой.


TDefault = class(TObject)
 public
   destructor Destroy; override;
 end;
.....

destructor TDefault.Destroy;
begin
 ShowMessage("Destroyed");
 inherited;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 lDefault: TDefault;
begin
 lDefault:= TDefault.Create;
end;


Что-то не убивается.


 
zamtmn ©   (2006-09-28 13:20) [14]

>>По-моему, с четвертой.
помоему это даже не планируется


 
Плохиш ©   (2006-09-28 13:21) [15]


> С какой версии Delphi стало возможным не дестроить локальные
> объекты принудительно?

С той, в которой появились интерфейсы.


 
Игорь Шевченко ©   (2006-09-28 13:25) [16]

Ш-К   (28.09.06 13:04) [13]

TDefault = class(TInterfacedObject)
 public
  destructor Destroy; override;
 end;

destructor TDefault.Destroy;
begin
ShowMessage("Destroyed");
inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
lDefault: IUnknown;
begin
lDefault:= TDefault.Create;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.045 c
1-1157698439
Grid
2006-09-08 10:53
2006.10.15
dbgrid


15-1158812778
palva
2006-09-21 08:26
2006.10.15
Электронные книги.


1-1157272016
atruhin
2006-09-03 12:26
2006.10.15
Ипользование объекта вместо записи


15-1158838499
StriderMan
2006-09-21 15:34
2006.10.15
Софт для управления проектами


2-1159119108
PeterBuild
2006-09-24 21:31
2006.10.15
ПРОБЛЕМа С ИНДЕКСАМИ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский