Thanks Barney but the problem was missing quote marks in the call to
retrieve retval from the instantiated CFOBJECT gcpp. Here's what was involved:
The Methods and Properties of the DLL as reported by
Microsoft's OleView.exe:
[id(0x00000004), helpstring("method getBalance")]
HRESULT getBalance(
[in] BSTR transCode,
[in] BSTR GCId,
[out] VARIANT* dAmount,
[out] VARIANT* currencyCode,
[out] VARIANT* expirationDate,
[out, retval] long* lErrCode);
The code that worked:
<CFOBJECT
TYPE="COM"
ACTION="create"
CLASS="GiftCardProvider.GCPProvider.1"
NAME="gcpp"
>
<CFSET vGCP = gcpp.getGiftCardProvider(-1)>
<!--- IN vars --->
<CFSET transCode = "222">
<CFSET GCId = "60362887117205742342">
<!--- OUT vars --->
<CFSET retval = "">
<CFSET dAmount = "">
<CFSET currencyCode = "">
<CFSET expirationDate = "">
<!---
NOTE THAT QUOTE MARKS ARE USED AROUND THE OUT VARS TO RETURN THEIR
VALUES BELOW!!!
--->
<CFSET retval = vGCP.getBalance(transCode, GCId, "dAmount", "currencyCode",
"expirationDate")>
<CFOUTPUT>
retval = #retval#
Balance: #dAmount#
currencyCode: #currencyCode#
expirationDate: #expirationDate#
</CFOUTPUT>
Sort of interesting to know if you ever wind up working with one of these
things.
Regards,
Karl S.
At 05:58 PM 11/7/04, you wrote:
>Message: 8
> Date: Sat, 6 Nov 2004 22:01:32 -0800
> From: [EMAIL PROTECTED]
>Subject: Re: Gnarly CFOBJECT problem
>
>Archive: http://www.houseoffusion.com/lists.cfm/link=i:4:183569
>---
>I'm not a COM guru, but to my knowledge, CF only supports single
>return variables from method calls regardless of object type.
>However, it should be a fairly trivial matter to make a proxy object
>to allow you access to all the OUT variables.
>
>Just have the proxy make your method call and store all four OUT vars
>as instance variables, and expose those instance variables via
>getters. Then from CF, instantiate the proxy object, call the method
>that does the call on your target object, and then you can call each
>getter individually to pull out all four OUT variables. It'll take a
>little non-CF work, but such is life. If this is a problem you forsee
>happening again, it probably wouldn't be too difficult to make your
>proxy generic enough to handle any arbitrary method call with an
>arbitrary number of OUT vars, and use an indexed or mapped getter for
>the recall.
>
>cheers,
>barneyb
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net
Message: http://www.houseoffusion.com/lists.cfm/link=i:4:183596
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54