-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathreadme_kol_err.rus.txt
57 lines (46 loc) · 3.51 KB
/
readme_kol_err.rus.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ и МАТЕМАТИКА
(включая КОМПЛЕКСНЫЕ ЧИСЛА) для KEY OBJECTS LIBRARY.
Версия 8.2.91, 29 мая 2010
---------------------------------------------------------
Copyright (C) 2001-2010, Vladimir Kladov.
Данный архив содержит три дополнительных модуля для Key Objects Library:
ERR.PAS - заменяет SysUtils.pas в части обработки исключений;
MMX.PAS - small utility function to detect MMX capabilities of CPU;
KOLMATH.PAS - заменяет стандартный модуль Delphi MATH.PAS с минимальными изменениями.
CPLXMATH.PAS - работа с комплексными числами.
Библиотека KOL позволяет разрабатывать небольшие, но мощные приложения для графической среды Win32 с использованием замечательной среды разработки Delphi IDE. Данный архив устраняет недостаток, имевший место ранее - необходимость использовать SysUtils.pas, увеличивающий размер приложения более чем на 10К. Использование ERR.PAS увеличивает размер exe-файла всего на 6K. Но позволяет обеспечить полноценную работу с исключительными ситуациями, создавая "устойчивые" приложения, удерживая их размер тем не менее в рамках приличия. По меньшей мере, разер получается существенно меньше, чем в любой другой среде разработки, обеспечивающей SEH (Structural Exception Handling).
Чтобы использовать ERR.PAS, достаточно включить ссылку на него в списке uses любого модуля проекта, или dpr-файла.
Главное отличие в обработке исключительных ситуаций состоит в том, что должен использоваться единственный класс (Exception) для работы с исключительными ситуациями. Не надо производить от него наследников. Вместо этого при необходимости следует создавать экземпляры самого класса Exception. При обработке ситуации сравнение следует производить не класса исключения с некоторым известным классом, а свойства Code с константой типа TError. В связи с этим, изменяется использование конструкции 'except on':
вместо того, чтобы записывать так:
====== CUT BEGIN ======
try ...
except
on EIntOverflow do HandleOverflow;
on EDivideByZero do HandleZeroDivide;
else HandleOther;
end;
====== CUT END ======
следует:
====== CUT BEGIN ======
try ...
except on E: Exception do
case E.Code of
e_IntOverflow: HandleOverflow;
e_DivBy0: HandleZeroDivide;
else HandleOther;
end;
end;
====== CUT END ======
И, чтобы сгенерировать свою исключительную ситуацию, следует поступать (например) так:
====== CUT BEGIN ======
... raise Exception.Create( e_Custom, 'This is my exception' );
... raise Exception.CreateCustom( 12345, 'This my exception 12345' );
... raise Exception.CreateCustomFmt( 67890, 'Custom error %d', [ MyBadVar ] );
====== CUT END ======
KOLMATH.PAS обеспечивается здесь как замена стандартного модуля MATH.PAS. Различие только в том, что вместо SysUtils.pas используется err.pas, и все обращения к функции Abs заменены на обращения к EAbs. Других отличий нет, так что все, что написано о математических функциях в справке Delphi, продолжает иметь силу. CPLXMATH.PAS - дополнительный модуль. Годится для использования отдельно от KOL. Для работы с этим модулем в невизуальных проектах (KOL без MCK) определите символ условной компиляции KOL в свойствах проекта, в визуальных KOL-проектах это не требуется.
В данной версии сделано исправление, позволяющее использовать обработчик on exception, как описано выше,
не только для собственных исключений, возбужденных по raise, но и для всех прочих.
Так же, исправлен mmx.pas (учтено, что команда CPUID портит регистр EBX).
------------------------------------------------------------------------
http://kolmck.net
mailto: [email protected]