James,
If oProperty was a pointer to an object that happens to have a Count property you'd get a false positive of it being a collection.
>Would the following work to distinguish between arrays and collections?
>
>lcProperty = 'oObject.oProperty'
>Try
> lnCount = eval( lcProperty + '.Count')
> * Collection here
>Catch
> * Array here
>EndTry
>