[python-win32] VT_DECIMAL variant
Tim Roberts
timr at probo.com
Wed Apr 15 02:03:16 EDT 2020
> On Apr 14, 2020, at 7:09 PM, Nikita Lepetukhin <lenikur at gmail.com> wrote:
>
> I use win32com module and everything is ok but I cannot find the way how to pass VT_DECIMAL variant value to COM object's method.
> ...
> This is how the interface is described in gencache:
> class IProperty(DispatchBaseClass):
> CLSID = IID('{0A4C05A0-107B-4A8B-9E34-44ED9B117A25}')
> coclass_clsid = IID('{2171DCF1-B70B-4CAB-9EB7-F7FED71956B4}')
>
> _prop_map_get_ = {
> "Value": (0, 2, (12, 0), (), "Value", None),
> }
That’s a property that returns a VT_VARIANT.
> In python code I get the object by the following way:
> ...
> I need to pass here VT_DECIMAL variant (due to data precision requirements) but it comes to COM object implementation as VT_R8 variant.
> I tried to use decimal python type but it comes as VT_CY variant.
>
> Could you help me to find out how to pass VT_DECIMAL variant from python to COM?
> I would appreciate your help very much!
The VT_CY type, the Python decimal type, and the C# decimal type are all the same — a 128-point fixed point value with 92 bits of precision. That’s probably what you should use. In order to use VT_DECIMAL, then you probably can’t use automatic translation.
—
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-win32/attachments/20200414/103dbd2f/attachment-0001.html>
More information about the python-win32
mailing list