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

Вниз

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

Наверх





Память: 0.54 MB
Время: 0.045 c
6-80083
beeper
2003-12-16 19:31
2004.02.25
Изменить настройки сети


14-80094
Android
2004-02-03 07:49
2004.02.25
Vendorid and Deviceid


7-80302
~GaMeRd~
2003-12-06 16:39
2004.02.25
Работа с Вебброузер(вб)


1-80004
jeka_t
2004-02-13 11:38
2004.02.25
Почему метод AddStrings не пашет в классе TStrings?


1-79954
Tigran
2004-02-13 19:51
2004.02.25
Откуда можно скачать Delphi 6,7 или 8





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