注冊(cè) 登錄
Office中國(guó)論壇/Access中國(guó)論壇 返回首頁(yè)

ganlinlao的個(gè)人空間 http://m.mzhfr.cn/?230471 [收藏] [復(fù)制] [分享] [RSS]

日志

freebasic菜鳥初學(xué)Freebasic基礎(chǔ)教程十二:使用afx庫(kù)的數(shù)組、字典和com庫(kù)

已有 4355 次閱讀2017-5-15 21:00 |個(gè)人分類:FreeBasic| FreeBasic教程, Freebasic入門, FreeBasic教程, Freebasic入門, FreeBasic教程, Freebasic入門, FreeBasic教程, Freebasic入門, FreeBasic教程, Freebasic入門

       
       一、使用safeArray數(shù)組
       我很驚訝jose為什么要提供vb數(shù)組safeArray,而且他對(duì)提供vb數(shù)組走了極端,分別提供了極其精簡(jiǎn)只限wstring類型的CwstrArray,和全功能的variant類型的CvariantArray。但想一想,也許這樣子也有一定的好處,在多線程的模式下,還有比safeArray數(shù)組更好的數(shù)組嗎?畢竟這是線程安全的,而且又易于使用。
        提供CwstrArray字符串?dāng)?shù)組,是因?yàn)閟pit函數(shù),必須有一個(gè)字符串?dāng)?shù)組來(lái)接收spit分割后字符串。不過在某些情況下,我們也是可以直接使用CwstrArray數(shù)組。如果要有VB交互的話,可以使用CvariantArray數(shù)組,但如果純粹在FB下使用,沒必要使用Variant和variant數(shù)組,那是在找虐。
         cWstrArray數(shù)組和vb中使用數(shù)組還是有細(xì)微的差別。
        (1)、vb中dim arr(4) as string,其中4表示數(shù)組的ubound是4,這樣的數(shù)組其實(shí)是5個(gè)元素。
                    但CwstrArray(4)表示這個(gè)數(shù)組是4個(gè)元素,它的Ubound是3
        (2) vb可以直接使用 arr(0)="這是一個(gè)測(cè)試",但cwstrArray.item(0)="這是一個(gè)測(cè)試",這個(gè)item無(wú)法省略
        (3)在單線程模式下,不必?fù)?dān)心數(shù)組是不是會(huì)lock,但在多線程模式下,你要注意數(shù)組加解鎖問題,也就是accessData和UaccessData這兩個(gè)方法最好是明確使用。
        (4)字符串聯(lián)接用+號(hào),盡量不使用&,如果&號(hào),你得注意是&**CwstrArray.item(0),2個(gè)*號(hào),這個(gè)同樣適用于Cwstr類中,使用&聯(lián)接號(hào)必須使用 &**cwstr,使用+號(hào)沒有任何問題,原因是因?yàn)?amp;符號(hào)得先強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型,先cast(),再進(jìn)行拼接。
        (5)vb中獲得數(shù)組元素的數(shù)量,是ubound(Arr)-Lbound(Arr),但CwstrArray使用是CwstrArray.count直接返回元素?cái)?shù)量
        (6)cWstrArray數(shù)組中可以復(fù)制數(shù)組,可以嵌套數(shù)組,可以使用variant中的數(shù)組vt_Array(僅限于字符串類型數(shù)組)
#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是降序,默認(rèn)是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庫(kù)中也分別提供了wstring類型的dictionary和variant類型的dictionary。用法和VB中使用dictionary幾乎一樣。
      cwstrDic類比vb的dictionary多了一個(gè)count方法,返回一個(gè)字典元素的數(shù)量。
       說(shuō)實(shí)話,我對(duì)afx庫(kù)只提供dictionary,其實(shí)是非常失望的。一般最好使用mdtypes這個(gè)泛型的集合類庫(kù)。
   

評(píng)論 (0 個(gè)評(píng)論)

facelist doodle 涂鴉板

您需要登錄后才可以評(píng)論 登錄 | 注冊(cè)

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 03:12 , Processed in 0.058684 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部