分享

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

 nxhujiee 2021-12-25
               一、使用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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多