Onuserfunction в консольном приложении
Приветствую!
Подскажите, есть консольное приложение, где я создаю frxReport. Этому созданному объекту мне нужно добавить анализ на неопознанную функцию. Вот кусок:
У меня ругается на строчку frxReport1.OnUserFunction:=frxReport1UserFunction;
Ошибка следующая:
[DCC Error] phprep.dpr(292): E2009 Incompatible types: 'method pointer and regular procedure'
В интернете полно решений подобной ошибки, что мол нужно создать свой класс, в нем прописать функцию и т.д. и везде решения связаны с наличием TForm.
Тут же формы нет.
Как мне в данном конкретном случае присвоить событию определенную свою функцию?
Заранее спасибо за ответ.
Подскажите, есть консольное приложение, где я создаю frxReport. Этому созданному объекту мне нужно добавить анализ на неопознанную функцию. Вот кусок:
...
...
function frxReport1UserFunction(const MethodName: String; var Params: Variant): Variant;
begin
if MethodName='SUMMAPROPIS' then
begin
.......
end;
end;
...
...
frxMem:=TfrxDBDataset.Create(nil);
frxReport1:=TfrxReport.Create(nil);
frxReport1.AddFunction('function SummaPropis(s : Real; v : String):String');
frxReport1.OnUserFunction:=frxReport1UserFunction;
...
У меня ругается на строчку frxReport1.OnUserFunction:=frxReport1UserFunction;
Ошибка следующая:
[DCC Error] phprep.dpr(292): E2009 Incompatible types: 'method pointer and regular procedure'
В интернете полно решений подобной ошибки, что мол нужно создать свой класс, в нем прописать функцию и т.д. и везде решения связаны с наличием TForm.
Тут же формы нет.
Как мне в данном конкретном случае присвоить событию определенную свою функцию?
Заранее спасибо за ответ.
Комментарии
теперь ошибка уже не при компилляции а при выполнении:
Memo8:Privileged instruction
В Memo8 вбита функция: [SUMMAPROPIS(<frxMem."col3">,'RUR')]
Проверил пошагово - в OnUserFunction программа попадает, но MethodName пустой (а я ожидаю SUMMAPROPIS).
п.с. в отчете больше функций никаких нет.
function frxReport1UserFunction(Self: TObject; const MethodName: String; var Params: Variant): Variant;
Иначе будет смещение параметров и стека, что приведет к AV.
спасибо, все заработало.