Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

try ... finally


Страницы:   1 2 3

Анонимщик ©   (2004-07-01 17:41:00) 

Как можно определить:

try

finally
// мы сюда попали нормальным образом или где-то после try было
// сгенерировано исключение?
end


Defunct   (2004-07-02 18:03:00) [1]

Анонимщик ©   (02.07.04 16:26) [44]

"все гениальное - просто" (С)
А гениев в MS не особо много, вот поэтому и приходится разбираться со всякой чепухой. AbnormalTermination как раз таковой и является.


Анонимщик   (2004-07-02 16:30:00) [2]

default

Спасибо, я там уже разобрался, сам ерунды малость нагородил, все заработало.


Анонимщик   (2004-07-02 16:26:00) [3]

panov

А я его не использую пока что и убирать его неоткуда. И мне тоже интересно, зачем это в майкрософте ее выдумали. Вы не знаете случайно?


default   (2004-07-02 16:22:00) [4]

Анонимщик ©   (02.07.04 15:04) [37]
это из-за ОС, я тоже увидев нули возмутился...посмотрите ещё статью на RSDN там написано про это


Тимохов   (2004-07-02 16:17:00) [5]


> panov ©   (02.07.04 16:09) [41]

я тоже когда рихтера четил припух малось от реализации исключений в win.
и совершенно не мог понять, когда может пригодится иная функциональность - отличкая от предлагаемой дельфи.

Т.о. мне тоже интересно.


panov   (2004-07-02 16:09:00) [6]

>Анонимщик ©   (02.07.04 15:50) [40]

Комментирование не предлагать.

Что ж ты все думаешь, что тебя ущемлять будут? Ведь все мы коллеги, и всем интересно разобраться.

Вот мне, например, интересно, зачем, для какой цели нужно AbnormalTermination.

И поверь, что это не для того, чтобы тебя зацепить, или заставить убрать этот код а для того, чтобы понять, в каком случае мне это может понадобиться, какая польза от применения AbnormalTermination


Анонимщик   (2004-07-02 15:50:00) [7]

Digitman

Начнем с AbnormalTermination. Я хочу написать это слово в pas-модуле так, чтобы компилятор не ругался. Что для этого нужно сделать? Комментирование не предлагать.


Igorek   (2004-07-02 15:20:00) [8]


> в теле finally-блока ничего кроме nil ты не увидишь в RaiseList
> причем вне зависимости от версии среды

Спасибо.


Digitman   (2004-07-02 15:07:00) [9]


> Анонимщик ©   (02.07.04 15:04) [37]


> чего-то, все же, не понимаю. А хотелось разобраться


на то и форум
говори, ЧТО конкретно не понимаешь


Анонимщик   (2004-07-02 15:04:00) [10]

Digitman

А все и так завелось, но я чего-то, все же, не понимаю. А хотелось разобраться.
Тогда к этому еще один вопрос. Есть статья про критические секции на

http://www.microsoft.com/rus/msdn/magazine/archive/2003-12/CriticalFull.asp

Начал проверять на дельфи, ничего не вышло. Все поля в RTL_CRITICAL_SECTION (поле FSection) равны нулю всегда. Как же все-таки определить, сколько конкурирующих потоков ждут входа?


Digitman   (2004-07-02 14:41:00) [11]


> Igorek ©   (02.07.04 14:21) [34]
> У меня Д5. Нету такой функции.
> Нашел только
> function RaiseList: Pointer;  { Stack of current exception
> objects }
> Надо будет проверить.


даже и не проверяй, не трать время

в теле finally-блока ничего кроме nil ты не увидишь в RaiseList
причем вне зависимости от версии среды

указатель этот неявно устанавливается в не-nil-значение непосредственно перед передачей управления в except-блок


Тимохов   (2004-07-02 14:26:00) [12]


> Igorek ©   (02.07.04 14:21) [34]

ставь шестой - там точно есть.


Igorek   (2004-07-02 14:21:00) [13]


> Тимохов ©   (02.07.04 13:56) [32]
>
> > Igorek ©   (02.07.04 13:37) [31]
>
> модуль system.

У меня Д5. Нету такой функции.
Нашел только
function RaiseList: Pointer;  { Stack of current exception objects }
Надо будет проверить.


Digitman   (2004-07-02 14:20:00) [14]


> Тимохов ©   (02.07.04 13:56) [32]


> не прочел


без вопросов


> Анонимщик ©   (02.07.04 12:50) [28]
> все мне сказанне не утешает.


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


Тимохов   (2004-07-02 13:56:00) [15]


> Igorek ©   (02.07.04 13:37) [31]

модуль system.


> Digitman ©   (02.07.04 13:17) [30]

забыл смайлы поставить :))
я сначала не прочел комментарий в начале: "это псевдокод".
виноват.


Igorek   (2004-07-02 13:37:00) [16]


> а если при возникновении исключения воспользуйетесь функцией
> AcquireExceptionObject, то они будут работать где угодно
> :))

А что это за функция такая AcquireExceptionObject?
У меня в msnd ее нет.


Digitman   (2004-07-02 13:17:00) [17]


> Тимохов ©   (02.07.04 12:53) [29]
> смешно.


ну уж не смешней твоего вопроса, мол, а где это ..

прекрасно же понимаешь, что нет такой ф-ции в WinAPI


Тимохов   (2004-07-02 12:53:00) [18]


> Digitman ©   (02.07.04 12:06) [26]

смешно.
я так вообще и понял, что это мета функция.


> Igorek ©   (02.07.04 12:33) [27]

а если при возникновении исключения воспользуйетесь функцией AcquireExceptionObject, то они будут работать где угодно :))


Анонимщик   (2004-07-02 12:50:00) [19]

Digitman

Я, собственно, хотел сделать на дельфи то же, что у Рихтера в книге, только и всего. А все мне сказанне не утешает.


Igorek   (2004-07-02 12:33:00) [20]

в unit SysUtils есть:

function ExceptObject: TObject;
function ExceptAddr: Pointer;

Но они работают только в блоке try...except.
Остается только сожалеть:
- что они не работают в блоке try...finally
- что в Дельфи нету блока try...except...finally


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо