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

Вниз

Почему 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.069 c
15-1350643594
Grimm375
2012-10-19 14:46
2013.03.22
Информировать, какие символы разрешено вводить


2-1331559417
aaas545
2012-03-12 17:36
2013.03.22
Update в SQL запросе пустых записей.


15-1338975632
Pro_Docent
2012-06-06 13:40
2013.03.22
Кто хочет немного физики?


15-1333119005
Baks
2012-03-30 18:50
2013.03.22
#10008 - replace hard disk1


15-1340220153
Дмитрий С
2012-06-20 23:22
2013.03.22
Посоветуйте алгоритм контрольной цифры.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский