SafeArrayGetUBound(EveryPatientInfo.parray,1,&UBound);

SafeArray在ADO编程中经常使用,它的主要目的是用于automation中的数组型参数的传递。因为在网络环境中,数组是不能直接传递的,而必须将其包装成Safe Array。实质上Safe Array就是将通常的数组增加一个描述符,说明其维数、长度、边界、元素类型等信息。Safe Array也并不是单独使用,而是将其再包装到VARIANT类型的变量中,然后才作为参数传送出去。在VARIANT的vt成员的值如果包含VT ARRAY|...那么它所封装的就是一个Safe Array,它的parray成员即是指向Safe Array中元素的类型可以是VARIANT能封装的任何类型,包括VARIANT类型本身。

  创建SAFEARRAY:

    方法一:使用SafeArrayAllocDescriptor在栈上创建一维数组

    方法二:使用SafeArrayAllocDescriptor和SafeArrayAllocData在堆上创建一维数组

    方法三:使用SafeArrayAllocDescriptor和SafeArrayAllocData在堆上创建二维数组

    方法四:使用SafeArrayCreate在堆上创建一维数组

    方法五:使用Safe ArrayCreate在堆上创建二维数组

    方法六:使用Safe ArrayCreateEx创建包含结构的一维数组

    访问SAFEARRAY:

    方法一:使用Safe ArrayAccessData方法

    方法二:使用SafeArrayGetElement和SafeArrayPutElement

    

     

     

    

    

    

原文地址:https://www.cnblogs.com/wjq13752525588/p/11540320.html