读SAFEARRAY,内容是BSTR一维数组

参考:https://msdn.microsoft.com/zh-cn/library/ms891243

SAFEARRAY* psa = NULL;//=new SAFEARRAY();

ipFissSchemeManager->get_Schemes(QStringConvertion::QStr2_bstr_t(strSchemeTable), &psa);

long lBound = 0, uBound = 0;

SafeArrayGetLBound(psa, 1, &lBound);

SafeArrayGetUBound(psa, 1, &uBound);

BSTR BSTRTemp;

BSTR HUGEP *pBSTR;

HRESULT hr;

long cElements = uBound-lBound;

// Get a pointer to the elements of the array.

hr = SafeArrayAccessData(psa, (void HUGEP* FAR*)&pBSTR);

for (long i = 0; i < cElements; ++i)

{

BSTR bstrTest = pBSTR[i];

}

SafeArrayUnaccessData(psa);

时间: 2024-10-09 20:16:12

读SAFEARRAY,内容是BSTR一维数组的相关文章

输出任何一个一维数组的内容

输出任何一个一维数组的内容 # include <stdio.h> //f函数可以输出任何一个一维数组的内容 void f(int * pArr, int len) { int i; for (i=0; i<len; ++i) printf("%d ", *(pArr+i) ); //*pArr *(pArr+1) *(pArr+2) printf("\n"); } int main(void) { int a[5] = {1,2,3,4,5};

07-JAVA一维数组及多维数组(2)

1. Java数组的定义: 1) 和其它编程语言的数组定义基本相同,具有2要素,分别是类型一致(数组中的数据都是一种类型的)和定长(初始化时就已经确定长度,这也意味着数组的内存空间也确定了,即大小不变了): 2) 在Java中数组类型也是一种引用类型,底层是用面向对象的类实现的: 3) 定义数组:支持两种格式 i. Java格式:type[] arrayName; ii. 传统的C语言格式:type arrayName[];  // 为了满足C程序员的编程习惯 !!更加推荐Java风格的,因为其

07-JAVA一维数组

一维数组的声明 使用一个数据时,必须要对其进行声明,这个道理对于数组来说也一样,数组在使用之前也必须先声明.先看下面的代码,是如何声明一个变量的. int a; 仔细分析一下:int 是指变量的数据类型,a 是指变量名,由变量的声明可以联系到数组的声明. int a[]; 仔细分析一下:int 是指数组中所有数据的数据类型,也可以说是这个数组的数据类型,a[]表示数组名. 基本类型数组的声明有几种形式: int a[]; int[] a; 这两种形式没有区别,使用效果完全一样,读者可根据自己的编

实验十——一维数组的定义及引用

1.本次课学习到的知识点: (1)本次课学习数组,一种最基本的构造类型,它是一组相同类型数据的有序集合. (2)数组中的元素在内存中连续存放,每个元素都属于同一种数据类型,用数组名和下标可以唯一地确定数组元素.(3)一维数组的定义与引用:定义一个数组,需要明确数组变量名,数组元素的类型和数组的大小. 一维数组定义的一般形式为:类型名    数组名[数组长度]: (4)类型名指定数组中每个元素的类型:数组名是数组变量的名称,是一个合法的标识符:数组长度是一个整型常量表达式,设定数组的大小.数组长度

【C语言】12-指向一维数组元素的指针

一.用指针指向一维数组的元素 1 // 定义一个int类型的数组 2 int a[2]; 3 4 // 定义一个int类型的指针 5 int *p; 6 7 // 让指针指向数组的第0个元素 8 p = &a[0]; 9 10 // 修改所指向元素的值 11 *p = 10; 12 13 // 打印第一个元素的值 14 printf("a[0] = %d", a[0]); 输出结果:,说明已经通过指针间接修改了数组元素的值,跟指向一个普通int类型变量是一样的. 由于数组名代表

Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数组

经常我们会在资源文件(res/strings.xml)定义字符串,一维数组,那定义二维数组?直接定义二维数组没找到,可以间接定义. 其实很简单,看过用过一次就可以记住了,一维数组估计大家经常用到,但是二维数组应该比较少用,因为只能间接定义二维数组. 数组的定义: 数组就是一次性定义相同数据类型的一组变量数组定义. 数组的特点: 1.数组是相同数据类型的元素的集合. 2.数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起. 3.数组元素用整个数组的名字和它自己在数组中的顺序位

一维数组元素的输入输出方法总结

1.数组的下标法:直观且容易理解 如: int a[5],i; printf("Input five numbers:"); for(i=0;i<5;i++) {  scanf("%d",&a[i]); } for(i=0;i<5;i++) {     printf("%4d",a[i]); } 2.数组名首地址法(指针法):指针增1运算的执行效率很高,利用指针的增1运算实现指针的移动,省去了每寻找一个数组元素都要进行的指针算

implode() — 将一个一维数组的值转化为字符串

语法: string implode ( string $glue , array $pieces ) string implode ( array $pieces ) 用 glue 将一维数组的值连接为一个字符串. 参数 glue: 默认为空的字符串. pieces: 你想要转换的数组. 返回值:返回一个字符串,其内容为由 glue 分割开的数组的值. Note:因为历史原因,implode() 可以接收两种参数顺序,但是 explode() 不行.不过按文档中的顺序可以避免混淆. Examp

C++:一维数组和二维数组

一维数组:int a[c],其中a是数组名称,c是数组维度,数组维度必须是常量表达式!例如: 1 int c=3; 2 int a[c];//错误!由于c不是常量表达式,所以该定义非法.若将c定义为const int,即c成为一个常量表达式,则可正常编译. 数组的初始化: int a[3]={1,2};//正确!等价于a[3]={1,2,0} int b[3]={1,2,3,4};//错误!初始值过多. int c[]={1,2};//正确!等价于c[2]={1,2} string d[3]={