注册 登录
Office中国论坛/Access中国论坛 返回首页

ganlinlao的个人空间 http://www.office-cn.net/?230471 [收藏] [复制] [分享] [RSS]

日志

freebasic菜鸟初学Freebasic基础教程十二:使用afx库的数组、字典和com库

已有 3985 次阅读2017-5-15 21:00 |个人分类:FreeBasic| FreeBasic教程, Freebasic入门, FreeBasic教程, Freebasic入门, FreeBasic教程, Freebasic入门, FreeBasic教程, Freebasic入门, FreeBasic教程, Freebasic入门

       
       一、使用safeArray数组
       我很惊讶jose为什么要提供vb数组safeArray,而且他对提供vb数组走了极端,分别提供了极其精简只限wstring类型的CwstrArray,和全功能的variant类型的CvariantArray。但想一想,也许这样子也有一定的好处,在多线程的模式下,还有比safeArray数组更好的数组吗?毕竟这是线程安全的,而且又易于使用。
        提供CwstrArray字符串数组,是因为spit函数,必须有一个字符串数组来接收spit分割后字符串。不过在某些情况下,我们也是可以直接使用CwstrArray数组。如果要有VB交互的话,可以使用CvariantArray数组,但如果纯粹在FB下使用,没必要使用Variant和variant数组,那是在找虐。
         cWstrArray数组和vb中使用数组还是有细微的差别。
        (1)、vb中dim arr(4) as string,其中4表示数组的ubound是4,这样的数组其实是5个元素。
                    但CwstrArray(4)表示这个数组是4个元素,它的Ubound是3
        (2) vb可以直接使用 arr(0)="这是一个测试",但cwstrArray.item(0)="这是一个测试",这个item无法省略
        (3)在单线程模式下,不必担心数组是不是会lock,但在多线程模式下,你要注意数组加解锁问题,也就是accessData和UaccessData这两个方法最好是明确使用。
        (4)字符串联接用+号,尽量不使用&,如果&号,你得注意是&**CwstrArray.item(0),2个*号,这个同样适用于Cwstr类中,使用&联接号必须使用 &**cwstr,使用+号没有任何问题,原因是因为&符号得先强制转换数据类型,先cast(),再进行拼接。
        (5)vb中获得数组元素的数量,是ubound(Arr)-Lbound(Arr),但CwstrArray使用是CwstrArray.count直接返回元素数量
        (6)cWstrArray数组中可以复制数组,可以嵌套数组,可以使用variant中的数组vt_Array(仅限于字符串类型数组)
#include once "afx/cwstrArray.inc"
#include once "afx/cwindow.inc"
dim myArr as cwstrArray=cwstrArray(4)
myArr.item(0)="1"
myArr.item(1)="2"
myArr.item(2)="3"
myArr.item(3)="4"
myarr.sort(false)     'false是降序,默认是true是升序
'afxmsg "one = " & myarr.item(0) & "two=   "  & myArr.item(1) & "Three=  " & myArr.item(2) & "four=" & myArr.item(3)
afxmsg "one = " + myarr.item(0) + "two=   "  + myArr.item(1) + "Three=  " + myArr.item(2) + "four=" + myArr.item(3)
     二、使用字典dictionary
       afx库中也分别提供了wstring类型的dictionary和variant类型的dictionary。用法和VB中使用dictionary几乎一样。
      cwstrDic类比vb的dictionary多了一个count方法,返回一个字典元素的数量。
       说实话,我对afx库只提供dictionary,其实是非常失望的。一般最好使用mdtypes这个泛型的集合类库。
   

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-27 09:47 , Processed in 0.099794 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部