Советы по Delphi

         

Crtdll.dll в программах на Delphi


Здравствуйте.

Тут открыл кое-что, возможно, давным давно всем известное. :) Поделюсь на всякий случай.

Сначала немного о корнях проблемы. Не секрет, что в 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. :)

С уважением,
Марк Шевченко. [001215]



Содержание раздела