Главная страницаОбратная связьКарта сайта

Если нет модуля 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. :)


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Если нет модуля Math", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info