Версия: 1.0
Эта библиотека позволяет выполнять операции (сейчас - сложение, вычитание, умножение) над целочисленными и вещественными числами любой длины.
О чем я:
Для сравнения, вы не можете произвести такую операцию с real\integer, в связи с ограниченным количеством данных, хранимых в типе. С другой стороны, в одном объекте String может хранится до двух миллиардов символов. Поэтому данная библиотека и приходит к вам.
Поддерживаемые типы:
uint - беззнаковое целочисленный
int - знаковый целочисленный
ureal - беззнаковый с точкой
real - знаковый с точкой
Поддерживаемые функции:
add - сложение
sub - вычитание
mul - умножение
cmp - сравнение (возращает -1\0\+1)
Для получения имени функции нужно сложить тип и функцию. К примеру, intadd, или realmul. Пример использования:
DrawText(RealMul('0.77','0.34'),0,0);
RePaint;
Delay(2400);
Примечания:
* Формат числа: [-]целая часть[.дробная часть]
* Допускаются лишние нули в начале и конце числа - библиотека "исправит" число с таковыми автоматически.
* По результатам тестирования (на нескольких моделях телефонов), средняя скорость выполнения функций для чисел на 16 знаков состовляет 1.1 - 1.5мс. То есть в секунду можно выполнять около 500 операций с такими числами, до того как мидлет станет подлагивать.
* Пока что функции деления чисел в библиотеки нет. До момента, пока она будет добавлена в библиотеку, можно использовать
function IntDiv(A, B: string): integer;
var C: string; R: integer;
begin
R := 0;
C := A;
while IntCmp(C, B) > 0 do begin
C := IntSub(C, B);
R := R + 1;
end;
IntDiv := R;
end;
* Функция uRealCmp опущена из-за длины кода - используйте RealCmp.
* Мотивацией для написания библиотеки послужила эта тема:
http://forum.boolean.name/showthread.php?p=184401
В общем, эта библиотека должна быть полезна, если переменных MidletPascalя вам недостаточно (будь то параметр в игре или обычное желание сделать калькулятор).
Удачной разработки