Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
ВнизОкругление чисел Найти похожие ветки
← →
Kinda © (2004-05-14 17:06) [0]Необходимо округлить число в большую сторону с указанной точностью на стороне сервера IB.
Для этих целей создаю dll и декларирую UDF:
Library LibMath;
uses
SysUtils, Dialogs, Math;
function RoundUp(X:double;Digits:integer):double;stdcall;export;
var
ScaledFractPart,Temp:double;
Precision:extended;
begin
Precision:=IntPower(10,Digits);
ScaledFractPart:=Frac(X)*Precision;
Temp:=Frac(ScaledFractPart);
ScaledFractPart:=Int(ScaledFractPart);
if (X>0) and (Temp<>0) then ScaledFractPart:=ScaledFractPart+1;
if (X<0) and (Temp<>0) then ScaledFractPart:=ScaledFractPart-1;
RoundUP:=Int(X)+ScaledFractPart/Precision;
end;
Exports
RoundUp;
end.
DECLARE EXTERNAL FUNCTION ROUNDUP
DOUBLE PRECISION,
INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT "RoundUp" MODULE_NAME "LibMath.dll";
однако при вызове функция возвращает значение 1
при любых значениях аргумента а в Делфи все работает нормально.
Помогите разобраться или подскажите готовое решение.
← →
KINDA © (2004-05-14 17:56) [1]Н-да. Проверка показала, что dll работает нормально
(вызвал её в VB). Значит проблемы в объявлении?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.034 c