Текущий архив: 2005.10.23;
Скачать: CL | DM;
Внизtry ... finally except Найти похожие ветки
← →
Vladimir88 (2005-09-30 14:47) [0](Delphi 7 или 2005) Можно ли как-нибудь провернуть чтоб в одном блоке try юзать и finally и except, мне кажется это очень полезная фишка и должна быть, но в справке ничего подобного не нашёл.
← →
Anatoly Podgoretsky © (2005-09-30 14:51) [1]Это две разные, как языковые, так и логические конструкции.
А у тебя что проблемы психологического порядка?
← →
Lamer@fools.ua © (2005-09-30 14:53) [2]>>Anatoly Podgoretsky © (30.09.05 14:51) [1]
Вот логически их как раз можно объединить. Так сделано в C#, например.try
{
}
catch (...)
{
}
catch (...)
{
}
finally
{
}
← →
ZeroDivide © (2005-09-30 14:58) [3]try
.......
try
except
....
Raise; //Rerasing Exception
end;
finally
end;
← →
Vladimir88 (2005-09-30 15:00) [4]Да, вот так же бы как в C# сделать
← →
TUser © (2005-09-30 15:00) [5]Я из подобного обсуждения тут как-то понял, что отсутствие "объединенного" оператора - плата за скорость работы компилятора Delphi.
← →
Digitman © (2005-09-30 16:27) [6]
> Да, вот так же бы как в C# сделать
ты еще как в Васике сделай)
там вообще с этим делом - засада)
ЧЕМ тебе не понравились всевозможного рода вложенные конструкции из блоков try..finally и try..except ?
все там четко, строго, наглядно и понятно ... как и во всем Паскале как таковом ..
← →
Vladimir88 (2005-09-30 17:11) [7]Люблю когда всё красиво выглядит(как например можно поизвращаться в Си с тем-же циклом for), хотя на самом деле действительно рекомендуется разделять операторы для наглядности.
← →
Юрий Зотов © (2005-09-30 17:13) [8]> Vladimir88 (30.09.05 17:11) [7]
> Люблю когда всё красиво выглядит
Если так, то тогда Вам надо любить как раз Паскаль, а не Си.
← →
Digitman © (2005-09-30 17:45) [9]
> можно поизвращаться в Си
Паскаль не допускает никаких извращений и двусмысленности/неопределенности.
Тем он и хорош.
Тем хороши и его компиляторы, работающие по однопроходной схеме (возможность этого дает сам язык), что дает неоспоримое преимущество в скорости компиляции перед двух и более проходными механизмами компиляции.
← →
ZeroDivide © (2005-09-30 18:38) [10]Паскаль почти не допускает никаких извращений и двусмысленности/неопределенности.
Язык программирования долго страдал противоречивостью в своей спецификации: правила определения эквивалентности типов не были заданы. Например рассмотрим следующие 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
← →
Anatoly Podgoretsky © (2005-09-30 19:41) [11]В этом отношении хорош АДА
type
Linear: Integer;
Square: Integer;
var
A, B: Linear;
C: Square;
begin
C := A * B;
В Паскале можно, в АДО нельзя. Очень строгий язык в отличии от Паскаля, особенно учитывая, что Борланд постоянно снижала строгость, плевав на Вирта.
Страницы: 1 вся ветка
Текущий архив: 2005.10.23;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.046 c