RE: COM Object assistance

2000-10-13 Thread Dave Watts

 I am trying to use a function within a COM object I wrote 
 in C++ which is expecting two arrays of floats and one 
 variable of type long.
 
 I noticed in some previous posts that you can only pass 
 strings using CFOBJECT. (Although I did find a Ben Forta 
 article discussing CFOBJECT which seems to claim otherwise:
 http://www.sys-con.com/coldfusion/feature/1-1/bfoncf/index_b.html).

As far as I can tell, you can only pass data to a COM object if that object
can cast it to the correct data from a string. Many COM objects use
datatypes that can be automatically converted from strings. You're going to
have a heck of a time passing arrays, though.

 My function declaration in C is:
 
   Corr(float x[1], float y[1], unsigned long n, float *r, 
 float *prob, float
 *z)
 
 my call to the COM object is:
 
   CFOBJECT TYPE="COM" NAME="Correlation" CLASS="Correlation.Corr"
 ACTION="CREATE"
   CFSET Correlation.Corr(#attributes.x#, #attributes.y#, 
 #attributes.n#)
 
 my current error is:
 
   Arguments expected by object does not match arguments 
 specified in the tag.
   Error building an argument list for: CORR
 
 (Which seems to support the assertion that you can only pass 
 Strings). Does anyone know of a work around for passing something 
 other than strings to COM objects? Should I just call the COM 
 object in ASP instead?

If you're not worried about performance issues, you can write a wrapper for
your COM object, which will handle the conversion for you. I've done this
before. I've never done it where the object is expecting an array, though.

Alternatively, you might consider simply rewriting your COM object to accept
the values you can pass from CF. You can add additional interfaces, and
leave the current interface intact, if you are already using your COM object
in other places.

Dave Watts, CTO, Fig Leaf Software
http://www.figleaf.com/
voice: (202) 797-5496
fax: (202) 797-5444
--
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
To Unsubscribe visit 
http://www.houseoffusion.com/index.cfm?sidebar=listsbody=lists/cf_talk or send a 
message to [EMAIL PROTECTED] with 'unsubscribe' in the body.



COM Object assistance

2000-10-12 Thread Andrew Walker

Hi--

I tried to find the answer to this question in the archives but didn't have
much luck.  My apologies if this has been addressed before.  I am trying to
use a function within a COM object I wrote in C++ which is expecting two
arrays of floats and one variable of type long.

I noticed in some previous posts that you can only pass strings using
CFOBJECT.  (Although I did find a Ben Forta article discussing CFOBJECT
which seems to claim otherwise:
http://www.sys-con.com/coldfusion/feature/1-1/bfoncf/index_b.html).

My function declaration in C is:

Corr(float x[1], float y[1], unsigned long n, float *r, float *prob, float
*z)

my call to the COM object is:

CFOBJECT TYPE="COM" NAME="Correlation" CLASS="Correlation.Corr"
ACTION="CREATE"
CFSET Correlation.Corr(#attributes.x#, #attributes.y#, #attributes.n#)

my current error is:

Arguments expected by object does not match arguments specified in the tag.
Error building an argument list for: CORR

(Which seems to support the assertion that you can only pass Strings).  Does
anyone know of a work around for passing something other than strings to COM
objects?  Should I just call the COM object in ASP instead?

This is a standalone COM object, it isn't linked to anything else and I am
running Cold Fusion server 4 on Windows 2000 with IIS.

Thanks for your help!




--
Archives: http://www.mail-archive.com/cf-talk@houseoffusion.com/
To Unsubscribe visit 
http://www.houseoffusion.com/index.cfm?sidebar=listsbody=lists/cf_talk or send a 
message to [EMAIL PROTECTED] with 'unsubscribe' in the body.