in reply to Re: Win32::OLE (Variants by reference)
in thread Win32::OLE (Variants by reference)
Hi maa
I was thinking about what you said PS: and in part I think you were correct! It is not documented but I have found out by testing and finally by the author note that any "string variant -> Variant(VT_BSTR, '');" regardless if it is passed by reference "VT_BYREF" or not, can not be used if that "string variant" will be used in a method -> $object->Method(); because the $object->Method(); will assign the "variant" to a "string variant value"!
So in short, by doing this....
my $sugg = Variant(VT_BSTR|VT_BYREF, "");
I was assigning $sugg to an absolute value = "", that could not be changed by the method -> $object->Method(); that I was using it in...
The correct way to pass a "string variant" to a method -> $object->Method(); that will change or assign a value to the "string variant" is listed below...
my $sugg = Variant(VT_VARIANT|VT_BYREF, "");
Authors Note...
After the method call $sugg will hold the returned value for the $sugg variant. It will still be variant but the overloading converts it to string representation automatically.
A side note (to help others you might run into this problem)...
Any "OLE String -> VT_BSTR or OLE Boolean -> VT_BOOL" that are placed in a "object Method" and they will return a value by the "method" that they are placed in should be called "VT_VARIANT"
Thanks Mark
@dawn