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

Вниз

OnCreate   Найти похожие ветки 

 
alex_*** ©   (2004-02-11 15:41) [40]

to [39]

проверять создался ли объект.

если честно, то нет. если валится конструктор, то вылетает исключение и ,как правило, я ему позволяю обработаться по умолчанию, поскольку "выпадение" конструктора я считаю ситуацией, когда дальнейшее продолжение действия не имеет смысла. Бывают исключения, конечно, но основная схема у меня такова.
p.s. а ты предлагаешь что-то типа того?

obj := TSomeObj.Create();
Assert(obj<>nil,".....");

???


 
KSergey ©   (2004-02-11 15:52) [41]

> [40] alex_*** © (11.02.04 15:41)
> to [39]
> p.s. а ты предлагаешь что-то типа того?
>
> obj := TSomeObj.Create();
> Assert(obj<>nil,".....");

Не пойму о чем это.
Я считаю так: если конструктор выполнился без исключений - то очевидно, что объект создался, и в приведенной строке Assert(obj<>nil,".....") смысла просто нет.
Если внутри конструктора вылетело исключение - то на следующую строку просто не попадаем - т.е. смысла в ней опять нет.
Так зачем же в приведенном коде написана вторая строка??


 
Тимохов ©   (2004-02-11 15:54) [42]


> obj := TSomeObj.Create();
> Assert(obj<>nil,".....");

И вы думаете, что assert когда нить может выдать сообщение?


 
Sandman25 ©   (2004-02-11 15:57) [43]

[39] KSergey © (11.02.04 15:24)

with Txxx.Create do
...

На выполнении Create происходит Exception. Чтобы его перехватить, нужно заключить Txxx.Create в try часть try-except. fianlly тут вообще не причем.


 
alex_*** ©   (2004-02-11 16:20) [44]

to KSergey ©

Да и придется исключение обрабатывать или проверять создался ли объект.

Вы это не проверяете??? Вот за это точно можно бабки снимать, если уж на то пошло!

я вот насчет проверки и подивился. Зачем это проверять объект сразу после создания.


И вы думаете, что assert когда нить может выдать сообщение?

а зачем мне от него нужно сообщение? пусть сгенерит исключение и пустит дальше по цепочке.


 
KSergey ©   (2004-02-12 08:06) [45]

> Sandman25 © (11.02.04 15:57) [43]
> [39] KSergey © (11.02.04 15:24)
>
> with Txxx.Create do
> ...
>
> На выполнении Create происходит Exception. Чтобы его перехватить,
> нужно заключить Txxx.Create в try часть try-except. fianlly
> тут вообще не причем.

Ничего не надо перехватывать.
Видимо, вы не в курсе, что дельфи сама неявно все вызовы конструкторов объектов заключает в try/except, при этом если в конструкторе происходит исключение - то автоматически (без какого-либо моего кода!) произойдет вызов деструктора. (Большое спасибо местным мастерам за эти мои знания.)
А потому я пишу именно

with Txxx.Create do
try
...
finally
Free;
end;

т.к. если в конструкторе произойдет исключение - то дестпуктор вызовется и так. А вот если уж объект успешно создался - то меня интересует лишь гарантированный вызов деструктора (через Free), а не проблема гашения возникших исключений.


 
Runner   (2004-02-12 09:15) [46]

Вот еще одно подтверждение того, что люди в этом форуме, если и соизволят ответить, то не для того чтобы помочь, а для того чтобы выпендриться. Чо вы грызетесь-то? Чел уже давно сказал "спасибо" и срулил. Эх вы... "мастера"...


 
Anatoly Podgoretsky ©   (2004-02-12 09:38) [47]

В данной ситуации типовой и удачной конструкцией является такая

with TformX.Create do
try
...
if Check then ShowModal;
...
finally
Free;
end;


 
Юрий Федоров ©   (2004-02-12 10:26) [48]

>>Runner (12.02.04 09:15) [46]
А вы что-то говорите только для того, чтобы выпендриться или погрызться ? Не допускаете мысли, что это была обычная дискуссия с целью выяснить истину? Причем совершенно без "грызни" ?


 
KSergey ©   (2004-02-12 10:42) [49]

> [46] Runner (12.02.04 09:15)

За внешнюю резковатость формулировки "Видимо, вы не в курсе" - прошу прощения.
Однако, на мой взгляд, если автор и сказал "я доволен", тема, возможно, кому-то еще покажется так же интересной - а потому отвечать шире поставленного вопроса - ничего в том странного нет. Как мне кажется.


 
Sandman25 ©   (2004-02-12 10:44) [50]

[45] KSergey © (12.02.04 08:06)

см. [25]


 
Sandman25 ©   (2004-02-12 10:47) [51]

Точнее, [26].


 
KSergey ©   (2004-02-12 11:22) [52]

> [51] Sandman25 © (12.02.04 10:47)
> см. [25]
> Точнее, [26].

Перечитал 25, 26, 45.
Связи не понял. Нельзя ли пространнее изъясняться, если это еще актуально, конечно? ;)


 
Sandman25 ©   (2004-02-12 11:36) [53]

[52] KSergey © (12.02.04 11:22)

Я бы предпочел сдаться, если Вы не против :)
Всему свое время и место. Это я о приемах программирования.


 
KSergey ©   (2004-02-12 12:28) [54]

Предлагаю просто считать, что консенсус достигнут ;)


 
Sandman25 ©   (2004-02-12 12:33) [55]

:)



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

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

Наверх




Память: 0.57 MB
Время: 0.037 c
1-79708
CAHbI4
2004-02-12 19:08
2004.02.25
Создание Page в PageControl


14-80212
Бзззер
2004-01-30 14:36
2004.02.25
Порты?


14-80136
Slavik_v
2004-02-02 05:54
2004.02.25
Что за пакет ScinPackD6 и где его можно взять?


7-80304
Номолос
2003-12-06 12:07
2004.02.25
Блокировка клавиш


3-79645
deadbitch
2004-01-28 16:07
2004.02.25
Пустые клетки в Excel через ADO