Собственные функции

отредактировано 06:01 Раздел: FastReport 3.0
Смотрит и делаем аналог по документации

function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
if MethodName = 'MYFUNC' then
Result := MyFunc(Params[0], Params[1], Params[2])

так вот на этом месте вылетает ошибка
Could not convert variant of type (array Variant) into Type (Double)

соответственно функция описана так
function MyFunc(p1 :Extended; p2, p3: Integer):string;

Не это не переход на 3 а не понятно что.

Комментарии

  • отредактировано 06:01
    Делаю так.
    Var i1,i2 :Integer;
    ex:Extended;

    ex := Params[0];
    i1 := Params[1];
    i2 := Params[2];

    Таже самая ошибка.

    я что то не въезжаю.
    Или я такой2 тормоз или продукт такой сырой!!!!

    Или нужно что-то
    где то прописать чтобы работало.

    Delphi 7 (билд 8.1)
    windows 2000 build 2195 sp4

    Вообщем я не знаю....
  • отредактировано 06:01
    Очень похоже на то, что ты неправильно вызываешь ф-ю в скрипте. Например, используешь свои любимые квадратные скобки, которые применяются для передачи open array параметров.
  • отредактировано 06:01
    Смотри в коде объявляю переменную

    в самом начале
    var
    PSUM, NDS:extended;

    дальше

    procedure Button1OnBeforePrint(Sender: TfrxComponent);

    begin
    with Button1, Engine do
    begin
    Идет вычисление.
    AGENTS :=INT(<QRep."SUM">* 3)/100;
    PSUM := <QRep."SUM"> - AGENTS;
    end

    если в мемо поставить
    [MyMoneyToStr(<PSUM>,1,0)]
    то при превью ругается
    Could not convert variant of type (NuLL) into Type (Double)
    неизвестная переменная или поле БД: PSUM

    [PSUM] причем вот так печатается нормально


    Ставим в мемо [MyMoneyToStr([PSUM],1,0)]
    Could not convert variant of type (array Variant) into Type (Double)
    переменную она нашла

    так тоже не работает.
    [MyMoneyToStr(<[PSUM]>,1,0)]

    так как писать тогда??


  • отредактировано 06:01
    Ставим в мемо [MyMoneyToStr(PSUM,1,0)]

    без всеких скобок проходит нормально.

    у вас не поймешь где нужно ставить скобки
    где не нужно.

    кстати почему не видно переменных которых мы объявили в тексте скриптта?
    глобальных.
  • отредактировано 06:01
    Еще раз: скобки квадратные - только для использования в мемо, и то, если стоит memo.ExpressionDelimiters = [,]. Скобки угловые - для обозначения полей БД, переменных из списка, служебных переменных, агрегатных функций. В ДРУГИХ СЛУЧАЯХ - НИКАКИХ СКОБОК НЕ НАДО!

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.