Problem with ActiveX server

I am writing a Delphi 4 application which controls a third-party
ActiveX server which was written in VB 5. I am encountering
some problems (names have been changed to protect third party):

1) Any call I make through the dual interface causes an
    Access Violation.

    I then tried the dispatch interface, where properties and methods
    work OK, except ...

2) I can't figure out how to pass a boolean array:

    A server method is declared, in VB:
        GetBits (ByRef  bBits() As Boolean)

    the subsequent TLB has:
        procedure GetBits(var bBits: {??PSafeArray} OleVariant)

    How do I define the array to be passed?
    Everything I've tried results in 'Invalid Type' error.

3) Delphi 4 Developer's Guide (p. 45-2)  says: 'The names of dual
    interfaces start with "I"'.

    Mine don't. Does this matter?  The CoClasses are OK.
    In fact, all the interfaces in the TLB begin with underscores.

4) The server provides a dispatch interface for events:

    __xxxClass = dispinterface
        ['{xxxx ...}']
        procedure ChangeHappened (fValue: single) ; dispid 16 ;
        ...
    end ;

    When I try to override it with
    TxxxEvents = class (TComObject, __xxxClass)
    the compiler complains with 'need interface type'

I am grateful in advance for any help.

Jon