Скрипт отчета
Требуется - добавить в пространство переменных экземпляр IDispatch, чтобы там с ним работать.
Делаю
fsGlobalUnit()->AddedBy = this;
Variant ComEnvVar;
ComEnvVar.VType = varDispatch;
ComEnvVar.VDispatch = FComEnv;
fsGlobalUnit()->AddVariable( "MyVar", "Variant", ComEnvVar );
Помещаю на отчет Memo с текстом [MyVar.SomeVar]
Вижу вызов на MyVar, в качестве результата возвращаю IDispatch, соответствующий SomeVar и ожидаю вызова SomeVar.Invoke с индексом 0, а получаю сообщение об ошибке "Invalid variant operation".
Подобную ошибку я правил в 2.5, помнится.
Делаю
fsGlobalUnit()->AddedBy = this;
Variant ComEnvVar;
ComEnvVar.VType = varDispatch;
ComEnvVar.VDispatch = FComEnv;
fsGlobalUnit()->AddVariable( "MyVar", "Variant", ComEnvVar );
Помещаю на отчет Memo с текстом [MyVar.SomeVar]
Вижу вызов на MyVar, в качестве результата возвращаю IDispatch, соответствующий SomeVar и ожидаю вызова SomeVar.Invoke с индексом 0, а получаю сообщение об ошибке "Invalid variant operation".
Подобную ошибку я правил в 2.5, помнится.
Комментарии
function TfrxCustomMemoView.FormatData(const Value: Variant;
AFormat: TfrxFormat = nil): String;
var
SaveDecimalSeparator: Char;
begin
if AFormat = nil then
AFormat := FDisplayFormat;
// Мои правки
// if Value = Null then
// Result := ''
if VarIsNull( Value ) then
begin
Result := '';
Exit;
end;
Блин, никогда эта Делфи не умела правильно с VARIANT работать.