Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Почему FreeAndNil такой, какой он есть?   Найти похожие ветки 

 
Sha ©   (2012-06-19 17:39) [40]

> а если код сложный?
> + копи паст?

ошибки надо исправлять, а не прятать


 
brother ©   (2012-06-19 18:56) [41]

> ошибки надо исправлять

вот FreeAndNil и поможет...


 
Sha ©   (2012-06-19 19:07) [42]

> вот FreeAndNil и поможет...

[37]


 
Владислав ©   (2012-06-19 23:21) [43]

Почему, если выстрелить себе в ногу, будет больно?..


> Наступил на грабли..


Вот чтобы было больно сразу после выстрела, а не через какое-то время, после прилетания черенка по голове.

Я к чему, помогло таки?


 
Омлет ©   (2012-06-19 23:55) [44]

> помогло таки?

Помогло.


 
Sha ©   (2012-06-20 00:31) [45]

попытки "обнулить переменную совсем" также "помогают" потерять контроль над программой


 
oxffff ©   (2012-06-20 00:34) [46]


> Sha ©   (20.06.12 00:31) [45]
> попытки "обнулить переменную совсем" также "помогают" потерять
> контроль над программой


Это как?


 
Sha ©   (2012-06-20 00:35) [47]

что как?


 
oxffff ©   (2012-06-20 00:38) [48]

Пример нужно.


 
Sha ©   (2012-06-20 00:45) [49]

Примера, как "обнулить переменную совсем", у меня нет. Была тут давно-давно веселая ветка, в которой ТС настойчиво хотел это сделать так, чтобы переменной не осталось вовсе, наверно. Думаю, многим она запомнилась.

Меня FreeAndNil настораживает не меньше, чем Application.ProcessMessages. Очень похоже, что у программиста была проблема, для решения которой использовались труднопонимаемые костыли. Скорее всего, все варианты передачи управления он не предусмотрел. Как-то так.


 
Petr V. Abramov ©   (2012-06-20 00:45) [50]


> oxffff ©   (20.06.12 00:38) [48]
>
> Пример нужно.
>

совсем :)


 
oxffff ©   (2012-06-20 00:50) [51]


> Sha ©   (20.06.12 00:45) [49]


Моя вина, я видимо что то пропустил. :)

P.S. Насколько помню, не использовал freeandnil
(2 раза не считается из 100500). Считаю тем не менее, что ее логика возможно кому то пригодится, и не отрицаю freeandnil. Но тем не менее, понимаю, что в сложных циклическим связках, гораздо лучше GC.


 
Anatoly Podgoretsky ©   (2012-06-20 07:38) [52]

> Sha  (20.06.2012 00:45:49)  [49]

Это у Борланда была проблема – чтобы еще для ламеров сделать, а то они
неумехи не могут переменную обнулить и вместо нормально решения в стиле ООП
они сделали нетипизированый костыль.


 
oxffff ©   (2012-06-20 09:12) [53]


> они сделали нетипизированый костыль.


Нетипизированный он и должен быть - это правильно с точки зрения теории типов.


 
KSergey ©   (2012-06-20 14:09) [54]

> oxffff ©   (20.06.12 09:12) [53]

Может таки TObject должен быть тип аргумента?
Иначе фигня получается.

Правда как это относится к теме данного топика - я чета не понимаю.


 
oxffff ©   (2012-06-20 15:11) [55]


> KSergey ©   (20.06.12 14:09) [54]
> > oxffff ©   (20.06.12 09:12) [53]
>
> Может таки TObject должен быть тип аргумента?
> Иначе фигня получается.


Фигня получается, если параметр будет TObject.

http://pages.cs.wisc.edu/~rkennedy/var-identical


 
KSergey ©   (2012-06-20 15:26) [56]

> oxffff ©   (20.06.12 15:11) [55]
> Фигня получается, если параметр будет TObject.

Можно поконкретнее, где там про фигню, относящуюся к FreeAndNil?
Впрочем, как и про любую другую.


 
oxffff ©   (2012-06-20 15:43) [57]


> KSergey ©   (20.06.12 15:26) [56]


Я не Rouse, на дискуссию у меня нет времени.


 
Kerk ©   (2012-06-20 15:46) [58]


> KSergey ©   (20.06.12 15:26) [56]

Попробуй сделать аналог FreeAndNil, принимающий TObject. Сам все поймешь.


 
oxffff ©   (2012-06-20 15:48) [59]


> Я не Rouse, на дискуссию у меня нет времени.


Впрочем думаю, что и у Александра его тоже нет.


 
jack128_   (2012-06-21 00:31) [60]


> Нетипизированный он и должен быть - это правильно с точки
> зрения теории типов.

Это правельно с точки зрения примитивной объект паскалевской системы типов. С дженериками эта процедура должна иметь такую сигнатуру:

procedure FreeAndNil<T:TObject>(var Obj: T);


 
icWasya ©   (2012-06-21 09:38) [61]

>Sha ©   (20.06.12 00:45) [49]
>была проблема, для решения которой использовались труднопонимаемые костыли.

Костыль применён, но им не воспользовались

procedure TForm1.ChangeConnectionEvent(Sender: TObject);
var fDBConnector:TDBConnector absolute Sender;
begin
 if Assigned(fDBConnector) then //<<==--
 AddToLog("Nul.") else
//<<==--
 if fDBConnector.ConnectionState = csDisconnected then
   AddToLog("Disconnected.");
end;


 
KSergey ©   (2012-06-21 10:46) [62]

> Kerk ©   (20.06.12 15:46) [58]

Короче наследника не дает запихать в var
Так бы и сказали. При чем тут дискуссия??


 
oxffff ©   (2012-06-21 12:56) [63]


> Это правельно с точки зрения примитивной объект паскалевской
> системы типов.


Я о том, что у типизированного указателя подтипом является только он сам.


 
wl ©   (2012-06-21 13:53) [64]

мне кажется это какие-то многопоточные заморочки. чтобы во время работы деструктора другой поток не вздумал пользоваться полуразрушенными данными объекта


 
KSergey ©   (2012-06-21 14:14) [65]

> wl ©   (21.06.12 13:53) [64]

Это никак не защищает, сели ссылки - две.
Да второй поток может запросто вызвать какой-то метод объекта, этот метод  на середине прервется - и тут поедет выполняться Free

Этому ничего не мешает вообще, это все на совести программиста такие фокусы.


 
Kerk ©   (2012-06-21 15:17) [66]

В мелкософт есть один чувак (Реймонд Чен?), объясняющий в блоге истоки некоторых исторически сложившихся решений в Windows и в WinAPI вчастности. Интересно было бы подобное из недр Embarcadero почитать. Кто вообще придумал FreeAndNil и почему реализовал именно так :)


 
Anatoly Podgoretsky ©   (2012-06-21 15:31) [67]

> Kerk  (21.06.2012 15:17:06)  [66]

Раньше блоги назывались дискуссионные группы новостей, Было Borland News
Groups, там TEAMB обсуждали эту тему, в общем выходило что в основном для
ламеров, пошли на поводу, особенно сильно это было в Д6/7 они столько
функций наплодили, вместо развития языка



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

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.6 MB
Время: 0.108 c
15-1336994384
AV
2012-05-14 15:19
2013.03.22
Copy команда. Как не затирать без вопросов?


2-1330249957
Pert21
2012-02-26 13:52
2013.03.22
Добавление и удаление свойства в процессе работы программы


15-1316779880
xayam
2011-09-23 16:11
2013.03.22
Физики ЦЕРН отменили предел скорости


15-1339690335
alexdn
2012-06-14 20:12
2013.03.22
asp.net


15-1350631915
AV
2012-10-19 11:31
2013.03.22
MSSQL. Посоветуйте индексы на таблицу