ole automation question

The question is really in two parts:

1.  I want to create an automation server in Delphi that has a function
     which uses an IDispatch pointer as one of its arguments.   This
     function is defined in the automated section of a TAutoObject class.
     far as I can find in the manuals I must create a Variant which holds
the pointer
     to the IDispatch pointer.  Is there some way that I don't have to use
the Variant.

2.  On the other side.  What about automation controllers in delphi?  It
seems that
     functions return Variants.  What if I want to have IDispatch pointers
     returned.  Is this possible?  And what of other servers that do
return IDispatch
     pointers, what happens to them?

I'm new to OLE programming in Delphi so any help on this subject would be


//  Kenneth M. Theriault
//  International Software Group, Inc.
//  Ken.Theria...@isg-us.com