Если нет модуля Math
Автор: Марк Шевченко
Здравствуйте.
Тут открыл кое-что, возможно, давным давно всем известное. :) Поделюсь на
всякий случай.
Сначала немного о корнях проблемы. Не секрет, что в Delphi модуль Math
поставляется только с Enterprise-версией программы. А платить больше тысячи
долларов только за то, чтобы воспользоваться парой функций совсем не хочется
(мне, например, простенькой atan2 часто не хватало).
Простым решением является "заимствование" модуля Math из пиратской
Enterpise-версии, но это, вообще-то, воровство. Самому же создавать
матеатическую библитеку с нуля - занятие неблагодарное (по крайней мере
достаточно трудоёмкое).
Не работая плотно на MSVC я как-то был не в курсе наличия библиотеки
crtdll.dll в Windows (насколько мне удалось выяснить, она таки является частью
операционной системы, по крайней мере ставится вместе с Windows 9x/NT/2000). С
её помощью можно решить указанную проблему, воспользовавшись готовым решением, а
именно - объявить все необходые функции из math.h в своей программе и
наслаждаться. :)
Пример с atan2:
function atan2(x, y: Double): Double; stdcall;
external 'crtdll.dll' name 'atan2';
|
Проверено - работает. Поскольку метод открылся буквально только что, я ещё не
успел сделать модуль-обёртку для всех математических функций. Видимо, сделаю и
отдам во всеобщее пользование.
Да, в crtdll.dll много фукнций, не связанных с математикой, в частности, если
вы в программе используете PChar, то можно воспользоваться набором сишных
strcmp, strcpy..., так же доступны isalpha, isdigit..., и, наконец, bsearch и
qsort. :)
|