| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> PB的扩展DLL开发(超级篇)(六) -> 正文阅读 |
|
[C++知识库]PB的扩展DLL开发(超级篇)(六) |
PB的扩展DLL开发(超级篇)(六) (PB史上第一次开放的开发技术) 数组使用及返回引用数组 数组的定义是这样: Typedef? PVOID OB_ARRAY_ID, FAR* POB_ARRAY_ID; 可见它是一个指针。本节举一个数组复制的函数例子,PB中声明如下: Function int CopyArray(string fromArray[],ref string toArray[]) system library “my.dll” alias for “CopyArray” DLLEXPORT DWORD WINAPI CopyArray(POB_THIS obThis, int nArgs) { ???????? BOOL isnull = FALSE; ???????? //先声明2个数组指针变量 ???????? OB_ARRAY_ID fromArray = NULL; ???????? OB_ARRAY_ID toArray = NULL; ??? //取第一个参数 ???????? fromArray = (OB_ARRAY_ID)ot_get_valptr_arg(obThis, &isnull); ??? //取第二个参数,引用类型 ??? { ??????? POT_LVALUE_INFO info = NULL; ??????? POB_DATA obRefArg = ot_get_next_lvalue_arg(obThis, &info); ??????? if (ot_is_a_reference_argument(obThis, obRefArg)) ??????? { ??????????? POT_REF_PAK v = (POT_REF_PAK)ob_get_data_ptr(obRefArg); ??????????? POB_DATA obToArray = ot_access_ref_data(obThis, v); ??????????? if (ot_is_array(obThis, obToArray)) ??????????? { ??????????????? //判断此数据是数组 ??????????????? toArray = (OB_ARRAY_ID)ob_get_data_ptr(obToArray); ??????????? } ??????? } ??? } ??? int nCopyIndex = 0; ??? //判断,其中返回值的引用数组必须是一个 unbounded 数组 ??? if (fromArray && toArray && ot_is_array_unbounded(obThis, toArray)) ??? { ??????? //获取源数组中的项数 ??????? int nItemCount = ot_array_num_items(obThis, fromArray); ??????? //循环取出所有源项,并且复制 ??????? for (int i = 0; i < nItemCount; i++) ??????? { ??????????? //源数据项 ??????????? POB_DATA obFromItem = ot_array_index(obThis,fromArray, i); ??????????? //目标数据项 ??????????? POB_DATA obToItem = ot_array_index(obThis, toArray, nCopyIndex); ??????????? ??????????? //进行数据项复制 ??????????? //注意第4个参数,这个参数表示是否引用,对于一般数据类型,直接是复制,但对于对象实例,不可能再创建一个对象实例,而应该是引用,即源数组和目标数组中的对象指针,指向同一个对象实例。 ??????????? rtDataCopy(obThis, obToItem, obFromItem, TRUE); ??????????? //目标索引加1 ??????????? nCopyIndex++; ??????? } ??? } ??? //设置函数返回值为复制的个数 ??? OB_DATA obReturn = { 0 }; ??? ob_set_data_int(&obReturn, nCopyIndex, INT_TYPE, 1); ??? ot_set_return(obThis, &obReturn); } 以上是一个关于数组使用的函数,这个函数示例中都加了详细的中文注解,应该比较好理解。 数组的使用比较复杂,以上只是对一般使用做个介绍,能满足大多数普通应用。 如果你对system library相关开发方式感兴趣,可到QQ群624409252共享里大自在的专用目录下下载DEMO。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 15:38:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |