Скрипт отчета
есть объект, потомок IDispatch. У этого объекта есть свойство Value с dispid 0.
есть функция, возвращающая объект.
В скрипте
Похоже, что в переменные V1 и V2 попало не значение свойства Value, а сам объект. Т.е. при присвоении неучитывался тип самих переменных. Плохо знаю Delphi, но на WIN API, для корректного присвоения, я бы вызвал VariantChangeType, с типом результата (в даном случае VT_I4). Ничем иным я не могу объяснить совпадение значений переменных.
если модифицировать пример:
Похоже имеет место быть ошибка.
есть функция, возвращающая объект.
В скрипте
var
V1,
V2: Integer;
begin
V1 := GetMyObject( 1 ); // функция вернула объект с Value = 1
ShowMessage( IntToStr( V1 ) ); // '1'
V2 := GetMyObject( 2 ); // функция вернула тот же объект с Value = 2
ShowMessage( IntToStr( V2 ) ); // '2'
ShowMessage( IntToStr( V1 ) ); // '2' ????????????????
end.
Похоже, что в переменные V1 и V2 попало не значение свойства Value, а сам объект. Т.е. при присвоении неучитывался тип самих переменных. Плохо знаю Delphi, но на WIN API, для корректного присвоения, я бы вызвал VariantChangeType, с типом результата (в даном случае VT_I4). Ничем иным я не могу объяснить совпадение значений переменных.
если модифицировать пример:
var
V1,
V2: Integer;
begin
V1 := GetMyObject( 1 ).Value; // функция вернула объект с Value = 1
ShowMessage( IntToStr( V1 ) ); // '1'
V2 := GetMyObject( 2 ).Value; // функция вернула тот же объект с Value = 2
ShowMessage( IntToStr( V2 ) ); // '2'
ShowMessage( IntToStr( V1 ) ); // '1'
end.
то код начинает себя вести, как и ожидалось.Похоже имеет место быть ошибка.