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

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

try ... finally except [D7, WinXP]


Vladimir88 ©   (2005-09-30 14:47:00) 

(Delphi 7 или 2005) Можно ли как-нибудь провернуть чтоб в одном блоке try юзать и finally и except, мне кажется это очень полезная фишка и должна быть, но в справке ничего подобного не нашёл.


Anatoly Podgoretsky   (2005-09-30 19:41:00) [1]

В этом отношении хорош АДА

type
  Linear: Integer;
  Square: Integer;
var
  A, B: Linear;
  C: Square;
begin
  C := A * B;


В Паскале можно, в АДО нельзя. Очень строгий язык в отличии от Паскаля, особенно учитывая, что Борланд постоянно снижала строгость, плевав на Вирта.


ZeroDivide   (2005-09-30 18:38:00) [2]

Паскаль почтине допускает никаких извращений и двусмысленности/неопределенности.

Язык программирования долго страдал противоречивостью в своей спецификации: правила определения эквивалентности типов не были заданы. Например рассмотрим следующие 2 типа языка Pascal:


type complex = record
                      Left: Integer;
                      Right: Integer;
                    end;

type coordinate = record
                      Left: Integer;
                      Right: Integer;
                    end;


Идентичны ли эти 2 типа? Очевидно, что они содержат одни и те же типы компонентов. От того, как мы определим язык, зависит, можно ли будет передать значение coordinate процедуре, принимающей аргумент типа complex и наоборот. Если можно, то говорят, что наш язык использует структурную эквивалентностьпри идентификации типов. С другой стороны, мы можем определить 2 типа как эквивалентные в том и только в том случае, если их имена одинаковы. В этом случае говорят, что в языке использована именная эквивалентность.
 Какой вариант выбран в спецификации языка Pascal? Изначально небыло сделано ни какого выбора. Никто так и не догадался, что существует несколько способов определения эквивалентности типов! В результате, каждая команда программистов, занимающаяся реализацией языка Pascal, должна была сама сделать выбор (и зачастую подобные комманды даже не осознавали, что они делают этот выбор). В результате этой неопределенности программа, написаная на Pascal для одной реализации языка, может вести себя совершенно по-другому в остальных реализациях.
  (c) Eric Allen


Digitman   (2005-09-30 17:45:00) [3]


> можно поизвращаться в Си


Паскаль не допускает никаких извращений и двусмысленности/неопределенности.

Тем он и хорош.
Тем хороши и его компиляторы, работающие по однопроходной схеме (возможность этого дает сам язык), что дает неоспоримое преимущество в скорости компиляции перед двух и более проходными механизмами компиляции.


Юрий Зотов   (2005-09-30 17:13:00) [4]

> Vladimir88   (30.09.05 17:11) [7]
> Люблю когда всё красиво выглядит

Если так, то тогда Вам надо любить как раз Паскаль, а не Си.


Vladimir88   (2005-09-30 17:11:00) [5]

Люблю когда всё красиво выглядит(как например можно поизвращаться в Си с тем-же циклом for), хотя на самом деле действительно рекомендуется разделять операторы для наглядности.


Digitman   (2005-09-30 16:27:00) [6]


> Да, вот так же бы как в C# сделать


ты еще как в Васике сделай)

там вообще с этим делом - засада)

ЧЕМ тебе не понравились всевозможного рода вложенные конструкции из блоков try..finally и try..except ?

все там четко, строго, наглядно и понятно ... как и во всем Паскале как таковом ..


Vladimir88   (2005-09-30 15:00:00) [7]

Да, вот так же бы как в C# сделать


TUser   (2005-09-30 15:00:00) [8]

Я из подобного обсуждения тут как-то понял, что отсутствие "объединенного" оператора - плата за скорость работы компилятора Delphi.


ZeroDivide   (2005-09-30 14:58:00) [9]

try
 .......
 try
 except
   ....
   Raise; //Rerasing Exception
 end;
finally

end;


Lamer@fools.ua   (2005-09-30 14:53:00) [10]

>> Anatoly Podgoretsky ©   (30.09.05 14:51) [1]

Вот логически их как раз можно объединить. Так сделано в C#, например.

try
{
}
catch (...)
{
}
catch (...)
{
}
finally
{
}


Anatoly Podgoretsky   (2005-09-30 14:51:00) [11]

Это две разные, как языковые, так и логические конструкции.
А у тебя что проблемы психологического порядка?


Наверх

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