|
|
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
Всегда так было? Код: pascal 1. 2. 3. 4. Код: pascal 1. 2. 3. 4. freeAndNil(form1) писать неудобно, есть ли что-то типа form1.freeAndNil ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 02:15 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
antox, а разве form1.free должен сбрасывать form1 в nil? и почему неудобно писать freeAndNil(form1)??? поясните) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 02:47 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
antox, не-а. Ты хочешь в методе (класса) изменить переменную, ссылающуюся на объект класса. А в методе доступен лишь сам объект, а не место, откуда на него ссылаются. Пиши как все FreeAndNil(form1), не выпендривайся. Хотя, можно добавить поле формы, где хранится адрес этой переменной переменной, тогда деструктор её очистит. Но, например, экземпляров формы может быть больше чем один, в общем - глупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 02:49 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
А я вообще не понимаю для чего нужна процедура FreeAndNil. И когда и зачем так уж нужна функция Assigned? Неужели разработчик проекта не может так написать код, чтобы контролировать создание и уничтожение форм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 03:04 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
northener А я вообще не понимаю для чего нужна процедура FreeAndNil. X.Free; X:=nil; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 04:57 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
northener А я вообще не понимаю для чего нужна процедура FreeAndNil. И когда и зачем так уж нужна функция Assigned? Неужели разработчик проекта не может так написать код, чтобы контролировать создание и уничтожение форм? Конечно же, мы, разработчики - совершенные существа, и можем помнить всё! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 04:58 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
rgreat northener А я вообще не понимаю для чего нужна процедура FreeAndNil. X.Free; X:=nil; Не совсем. Это экономия следующей конструкции: Код: pascal 1. 2. 3. 4. 5. 6. Это не совсем одно и то же. Несмотря на то, что X := nil формально не атомарная операция, указатель-таки, если выровнен, на x86 будет установлен атомарно. В итоге мы сначала объявляем "внешнему миру", что объект not assigned, и только потом его убиваем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 09:59 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
deleted - протупил. northener А я вообще не понимаю для чего нужна процедура FreeAndNil. И когда и зачем так уж нужна функция Assigned? Неужели разработчик проекта не может так написать код, чтобы контролировать создание и уничтожение форм? Да при чем тут формы... Механизм-то универсальный. Это нужно для однородности обработки объектов, втч чтобы просто не реагировать на неинициализированные сущности. Про FreeAndNil - см. выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 10:02 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
northenerИ когда и зачем так уж нужна функция Assigned? Она нужна исключительно в случаях когда конструкция "foo <> nil" интерпретируется неоднозначно. Так же как и Addr() против @. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 14:26 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
ъъъъъКонечно же, мы, разработчики - совершенные существа, и можем помнить всё! Ну, собственно, да. Создавать объект когда он нужен и освобождать сразу после этого - такая же простая привычка как снимать штаны перед сраньем и надевать после. Хотя, конечно, некоторые топикстартеры производят впечатление, что этого так и не освоили. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 14:32 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
CLSID_NTTPВ итоге мы сначала объявляем "внешнему миру", что объект not assigned, и только потом его убиваем. Совершенно бессмысленные прыжки в ширину: Поток 1: tmp := X; Поток 2: tmp := X; Поток 1: X := nil; Поток 2: X := nil; Поток 1: tmp.free; Поток 2: Ой! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 14:44 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
antox Всегда так было? Да. antox freeAndNil(form1) писать неудобно Неудобно спать на потолке. И исправлять баги в коде любителей Free без Nil. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 15:15 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
FreeAndNil для слабаков! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 15:19 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Совершенно бессмысленные прыжки в ширину: Поток 1: tmp := X; Поток 2: tmp := X; Поток 1: X := nil; Поток 2: X := nil; Поток 1: tmp.free; Поток 2: Ой! Поток 1: Lock; Поток 2: Lock; Поток 1: tmp := X; Поток 1: X := nil; Поток 1: tmp.free; Поток 1: UnLock; Поток 2: tmp := X; Поток 2: X := nil; Поток 2: Nothing; Поток 2: UnLock; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 15:45 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
rgreat northener А я вообще не понимаю для чего нужна процедура FreeAndNil. X.Free; X:=nil; Что будет, если X.Free вызовет исключение?... Dimitry Sibiryakov Совершенно бессмысленные прыжки в ширину: Поток 1: tmp := X; Поток 2: tmp := X; Поток 1: X := nil; Поток 2: X := nil; Поток 1: tmp.free; Поток 2: Ой! Если кто-то не умеет в синхронизацию - это не проблема FreeAndNil(), её задача в другом, она скорее заменяет конструкцию: Код: pascal 1. 2. 3. 4. 5. Только без накладок на секцию try-finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 16:31 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov northenerИ когда и зачем так уж нужна функция Assigned? Она нужна исключительно в случаях когда конструкция "foo <> nil" интерпретируется неоднозначно. Так же как и Addr() против @. В основном Assigned() нужна для проверки обработчиков событий. Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 16:35 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
alekcvpЧто будет, если X.Free вызовет исключение?... Ссылка на так и не разрушившийся объект будет потеряна навсегда. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 16:39 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Пффф так никто и не говорит, что это достаточное и универсальное средство синхронизации для многопоточности. Но кое-где применимо. Создавать объект когда он нужен и освобождать сразу после этого - такая же простая привычка как снимать штаны перед сраньем и надевать после А потом попадаешь в ситуацию, где объект создается одной сущностью (потоком, в частности), а уничтожается совсем в другом месте другой, причем иначе сделать невозможно из-за структуры библитоеки - и привычка уже не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 16:46 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey FreeAndNil для слабаков! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 17:15 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
YuRock Free тоже, только Destroy!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 17:17 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ YuRock Free тоже, только Destroy!! Да шучу я. А в деструкторе никто не запрещает if FFieldObject <> nil then FFieldObject.Destroy писать)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 17:30 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
CLSID_NTTPА потом попадаешь в ситуацию, где объект создается одной сущностью (потоком, в частности), а уничтожается совсем в другом месте другой И это как-то в Вашем мозгу отличается от первого случая?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 17:41 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov alekcvpЧто будет, если X.Free вызовет исключение?... Ссылка на так и не разрушившийся объект будет потеряна навсегда. Ага, а в X останется ссылка на частично уничтоженный объект, и что будет при следующем обращении к нему - хз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 22:53 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
опять набежало любителей сохранять зомби-ссылки юзайте FreeAndNil. если инстанс уничтожен, то не существует ни одной причины хранить ссылку на уничтоженное место. практическая польза же есть: лучше ваша программа завалится у себя и на тестах, чем у юзеров. так же привет всем идеальным программистам, пишущим идеальные программы без единой ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2021, 23:53 |
|
||
|
free / FreeAndNill всегда так было?
|
|||
|---|---|---|---|
|
#18+
ъъъъъ northener А я вообще не понимаю для чего нужна процедура FreeAndNil. И когда и зачем так уж нужна функция Assigned? Неужели разработчик проекта не может так написать код, чтобы контролировать создание и уничтожение форм? Конечно же, мы, разработчики - совершенные существа, и можем помнить всё! Разработчику достаточно быть грамотным инженером, чтобы всё контролировать. Быть суперсовершенным не обязательно. Если проект очень большой, то нужен ещё и архитектор проекта, чтобы раздавать конкретные задачи, конкретным разработчикам с конкретными заданиями. Ну и да. Формы я упомянул чисто от балды. Имел я в виду любые объекты любых классов. Я не понимаю зачем нужна переменная-указатель на экземпляр класса, которую нужно обязательно нилить при уничтожении этого экземпляра. И зачем вообще нужна такая переменная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2021, 03:07 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=29&tid=2037717]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 414ms |

| 0 / 0 |
