FastReport 3.10 : разные результаты пользовательс
Всем добрый день!
Столкнулся с интересной проблемой при использовании FastReport'a (3.10):
Моя функция округления:
которую подключил в FastReport через модуль (как в мануале написано, она появилась в списке функций) при запуске отчета в design-time выдает одно значение, а в run-time - другое !!!
Пример: в "Текст" помещаю [MyRound_2(52.925)]
в design-time: 52,93
а в run-time: 52,92
Чем можно вылечить? Мож че не так делаю?
Привожу на всяк пожарный текст модуля:
Столкнулся с интересной проблемой при использовании FastReport'a (3.10):
Моя функция округления:
function MyRound_2(AVal: Extended): Extended;
begin
Result := 0.01 * Trunc(0.5 + AVal*100);
end;
которую подключил в FastReport через модуль (как в мануале написано, она появилась в списке функций) при запуске отчета в design-time выдает одно значение, а в run-time - другое !!!
Пример: в "Текст" помещаю [MyRound_2(52.925)]
в design-time: 52,93
а в run-time: 52,92
Чем можно вылечить? Мож че не так делаю?
Привожу на всяк пожарный текст модуля:
unit uMyFunctions;
interface
implementation
uses SysUtils, Classes, fs_iinterpreter;
Type
TFunctions = class(Tobject)
private
function CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
public
constructor Create;
destructor Destroy; override;
end;
Var
Functions: TFunctions;
function MyRound_2(AVal: Extended): Extended;
begin
Result := 0.01 * Trunc(0.5 + AVal*100);
end;
constructor TFunctions.Create;
begin
with fsGLobalUnit do
begin
AddedBy := Self;
AddMethod('function MyRound_2(AVal: Extended): Extended',
CallMethod, 'My functions', 'Rounds up to 2 digits');
AddedBy := nil;
end;
end;
destructor TFunctions.Destroy;
begin
if fsGlobalUnit <> nil then
fsGlobalUnit.RemoveItems(Self);
inherited;
end;
function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if CompareStr(MethodName, 'MYROUND_2') = 0 then
Result := MyRound_2(Params[0])
end;
initialization
Functions := TFunctions.Create;
finalization
Functions.Free;
end.
Такое впечатление, что где-то при передаче параметров в рантайме что-то нарушается...