Длинная арифметика (Bignum arithmetic ) c COM-интерфейсом и C API Functions для Excel. С/С++ - VBA

Узнай цену своей работы

Формулировка задачи:

Проект основан на исходниках (на С++) библиотеки MPIR, Edition 3.0.0. Полностью написан на С/С++. Скорость на порядок выше предыдущего решения. Реализовал два блока в проекте:

1.DLL c COM интерфейсом.

Реализованы dual-интерфейсы с Automation-совместимыми типами данных, структур (поддержка как раннего вывязывания, так и позднего). Ранний предпочтительнее в части скорости (на 50% быстрее). Реализовано два класса: класс целых чисел с арифметикой (BignumArithmeticInteger) и класс чисел с плавающей точкой (BignumArithmeticFloat). При создании экземпляра класса создается массив из 256 чисел с арифметикой. К числам можно обращаться по номерам (была задумка ввести имя, но оправдывает ли это удобство потери в скорости?) BignumArithmeticInteger (Bignum) увеличивается в памяти по мере расчета автоматически, перераспределяя память. BignumArithmeticFloat (Bignum), задается изначально, т.к. дробь может быть бесконечной (по умолчанию принимается минимальный размер). Размер чисел ничем не ограничен, кроме вашей оперативки. Регистрация COM реализовано как под админом, так и под пользователем (актуально в офисной части клиентов) Регистрация стандартная: Админ: Regsvr32 "...\полный путь\FulName.DLL" Пользователь: Regsvr32 /i /n "...\полный путь\FulName.DLL" Примеры использования см. ниже.

2.XLL для Excel с C API - функциями.

Добавил базовый набор. Будет потребность в дополнительных - добавлю по запросу. Для функций создано два раздела в стандартном списке с названиями классов в COM (+один общий). Функции поддерживают многопоточные расчеты. Работа с функциями как с обычными (различий нет). Обычные написаны тоже на С/С++ под C API. В XLL ресурсы упакована COM.DLL, распаковывается и устанавливается под пользователем - автоматом. Поэтому открываем XLL или устанавливаем как надстройку - готово (ничего регистрировать не надо). Пишем код в VBA и работаем. Советую раннее связывание. Видим свойства и методы объекта. Оные можно посмотреть и в диспетчере объектов (см. рис.) Примеры см. ниже. Где тестировалось: VBA:
1С:
Версия 0.0.0.1 под x64 (x32 - пока не поддерживаю). Прошу протестировать, написать, что хотелось бы видеть в финальной версии. Реализована простенькая справка с интерфейсом (будет интерес - можно причесать красивее). Help:
Спойлер
Ресурсы: MPIR library, Edition 3.0.0 (freely distributable librarys)http://mpir.org/ + my code written in C / C ++ ©2018, BedvitCOM v.0.0.0.1 License: Freely distributable libraryВсегда актуальные версии библиотек здесь. Сделал в одном месте, что бы было проще поддерживать.

Решение задачи: «Длинная арифметика (Bignum arithmetic ) c COM-интерфейсом и C API Functions для Excel. С/С++»

textual
Листинг программы
Dim A, B, C: A = 1: B = 2: C = 3
Dim I As Object: Set I = CreateObject("BedvitCOM.BignumArithmeticInteger") 'Создаем массив целых больших чисел и арифметикой (класс)
I.BignumSet A, "12324344435654132546546546564453131" 'задаем данные в число A
I.BignumSet B, "34534534546546546546554665513213211" 'задаем данные в число B
I.Sum C, A, B 'C=A+B
Debug.Print I.Bignum(B) 'смотрим
I.Clear  'освобождаем память для всего объекта I

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы