国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
(轉)vb拾遺*2

(轉)vb拾遺*2

(2009-11-10 19:50:01)
標簽:

vb

雜談

19.VB制作OCX、DLL控件的問題

以前流行對象封裝時,搞了很多的控件,什么都封,
結果后來給客戶安裝時,老是運行不了主程序,OCX總是出現問題,無論怎么重裝,重新注冊也還是運行不了,
即使重裝windows,一些機子也還是運行不了程序,
OCX在注冊方面存在缺陷,所以VB盡量避免制作OCX,否則調試夠你頭疼的,OCX可以使用用戶控件代替,一些無界面的控件可以用模塊和類庫代替。

如果非要用OCX(比如為了保護源代碼的產權),那避免頻繁調整接口,調整之后一定要同步升級版本,需要說明的是,微軟的COM里每個公開的接口(方法、屬性),都有一個接口ID,所以調整方法都要更新接口ID,不更新則接口會維持舊的引用,所以盡量避免頻繁修改方法,如果有修改,最好在原來的基礎上擴展一個新的方法,而不是直接修改原來的方法,最好發(fā)布之后就不再調整控件。

 

ON ERROR GOTO  不同于  on error resume next 

Private Sub Form_Load()
    on error goto xx
    k
    exit sub
xx:
    MsgBox "Form_Load()"
End Sub

Private Sub k()
    On Error GoTo xx
    On Error GoTo 0
    Dim As Collection
    MsgBox k.Count
    Exit Sub
xx:
    MsgBox "k()"
End Sub

上面的代碼,如果加上 On Error GoTo ,那之前的 On Error GoTo xx 就不再起作用,出錯后會繼續(xù)冒泡的方式上傳,
如果之前的是 on error resume next ,再調用 on error goto 也會一樣,出錯不會再繼續(xù)執(zhí)行,
所以,on error goto 只有當跟在 on error goto label 或者 on error resume next 之后才會起作用,意思是恢復默認的錯誤處理方式,讓on error goto label 或者 on error resume next不起作用:

Private Sub Form_Load()
k

End Sub

Private Sub k()
    On Error Resume Next
    
    On Error GoTo 0
    Dim As Collection
    MsgBox k.Count
    MsgBox Err.Number
    Exit Sub
xx:
    MsgBox Err.Description
End Sub

 

ASP下沒有 on error goto label 語句,只有  on error resume next,所以ASP下只用過 on erroro resume next

VB下支持 on error goto label ,所以VB里99%是使用 on error goto label,從不使用 on error goto 0,一些特殊情況使用 on error resume next,比如不需要處理錯誤,而且需要讓程序執(zhí)行完,不管出錯與否時,就使用 on error resume next
來源:(http://blog.sina.com.cn/s/blog_4c0c94450100g301.html) - (轉)vb拾遺*2_維以不永傷_新浪博客
另外對于錯誤處理,特別是一些分層設計,比如將業(yè)務函數封裝在類里,錯誤是在類里處理還是在外面處理,需要作好規(guī)定,
過去比較常用的方法就是類里處理完所有錯誤,然后外面通過返回值來判斷是否執(zhí)行成功,這個可以參考大多數的API以及COM的處理方式,大多遵守這種方式。但這種方式設計不是很好,外面調用需要頻繁判斷返回值,非常煩瑣,忘記判斷往往又會導致很多問題,

所以另一種比較好的方法就是類里需要處理錯誤,將錯誤預處理一下,處理完后,再將處理的結果繼續(xù)以錯誤拋出來,
以前寫的那三個錯誤處理函數就是這種方式,類里處理完錯誤后再調用 nextError ,將錯誤繼續(xù)上傳,外面調用的地方,最外層調用者,調用 EndError 結束錯誤上傳,并顯示錯誤。

在一些語言里,類里都沒辦法MSGBOX,必須得關聯到主窗體才行,VB比較靈活一點,太靈活也不是好事,職責要分清
20.VB使用映射表

dim as new collection
c.add Array("sx","數學"),"sx"
c.add Array("yw","語文"),"yw"
c.add Array("en","英語"),"en"

也可以用對象來代替數組,可讀性更好:

    Dim As New Collection
    Dim km1 As New CKeMu
    km1.KeMuId "sx"
    km1.KeMuMC "數學"
    Call x.Add(km1, km1.KeMuId)
    
    Dim km2 As New CKeMu
    km2.KeMuId "yw"
    km2.KeMuMC "語文"
    Call x.Add(km2, km2.KeMuId)
    
    Dim km3 As New CKeMu
    km3.KeMuId "en"
    km3.KeMuMC "英語"
    Call x.Add(km3, km3.KeMuId)

類CKeMu就兩個屬性:

Public KeMuId As String
Public KeMuMC As String
 

20.VB用集合與數組模擬.NET里的哈希表類型

dim as new collection
c.add Array("sx","數學"),"sx"
c.add Array("yw","語文"),"yw"
c.add Array("en","英語"),"en"

也可以用對象來代替數組,可讀性更好:

    Dim As New Collection
    Dim km1 As New CKeMu
    km1.KeMuId "sx"
    km1.KeMuMC "數學"
    Call x.Add(km1, km1.KeMuId)
    
    Dim km2 As New CKeMu
    km2.KeMuId "yw"
    km2.KeMuMC "語文"
    Call x.Add(km2, km2.KeMuId)
    
    Dim km3 As New CKeMu
    km3.KeMuId "en"
    km3.KeMuMC "英語"
    Call x.Add(km3, km3.KeMuId)

類CKeMu就兩個屬性:

Public KeMuId As String
Public KeMuMC As String

 

21.避免硬編碼值

硬編碼就是在程序里寫死為一些數字、字符等,
而通常這些數字字符可能會變化的,如果很多地方都寫死這些數字,將來調整起來就非常麻煩。

當然,可以定義一些系統(tǒng)級全局常量,這樣將來更改 起來可能會方便一些,另外,基于配置的方式來編寫程序可能修改與維護更為方便,比如資源文件、數據庫來存儲這些可配置的數據。

硬編碼值容易寫錯,比如這個窗體是這個,那個窗體是那個,多個程序員一起開發(fā)可能問題會更多,手一抖就有可能打錯,打錯了,也不會象寫錯變量名一樣有錯誤提示,

22.每個窗體、模塊、類模塊里開頭都加上 Option Explicit

這也許是最基本的規(guī)定了,但很多時候都忘記加這個東西,
菜單:工具-選項,勾上“要求變量聲明”

勾上后,以后增加窗體或模塊時,自動會加上 Option Explicit 這個東西上去,

但很多時候維護一些舊的程序,他們都不勾這個選項,一勾就可能有很多問題。

 

 

20.VB使用映射表

dim as new collection
c.add Array("sx","數學"),"sx"
c.add Array("yw","語文"),"yw"
c.add Array("en","英語"),"en"

也可以用對象來代替數組,可讀性更好:

    Dim As New Collection
    Dim km1 As New CKeMu
    km1.KeMuId "sx"
    km1.KeMuMC "數學"
    Call x.Add(km1, km1.KeMuId)
    
    Dim km2 As New CKeMu
    km2.KeMuId "yw"
    km2.KeMuMC "語文"
    Call x.Add(km2, km2.KeMuId)
    
    Dim km3 As New CKeMu
    km3.KeMuId "en"
    km3.KeMuMC "英語"
    Call x.Add(km3, km3.KeMuId)

類CKeMu就兩個屬性:

Public KeMuId As String
Public KeMuMC As String

20.VB用集合與數組模擬.NET里的哈希表類型

dim as new collection
c.add Array("sx","數學"),"sx"
c.add Array("yw","語文"),"yw"
c.add Array("en","英語"),"en"

也可以用對象來代替數組,可讀性更好:

    Dim As New Collection
    Dim km1 As New CKeMu
    km1.KeMuId "sx"
    km1.KeMuMC "數學"
    Call x.Add(km1, km1.KeMuId)
    
    Dim km2 As New CKeMu
    km2.KeMuId "yw"
    km2.KeMuMC "語文"
    Call x.Add(km2, km2.KeMuId)
    
    Dim km3 As New CKeMu
    km3.KeMuId "en"
    km3.KeMuMC "英語"
    Call x.Add(km3, km3.KeMuId)

類CKeMu就兩個屬性:

Public KeMuId As String
Public KeMuMC As String

21.避免硬編碼值

硬編碼就是在程序里寫死為一些數字、字符等,
而通常這些數字字符可能會變化的,如果很多地方都寫死這些數字,將來調整起來就非常麻煩。

當然,可以定義一些系統(tǒng)級全局常量,這樣將來更改 起來可能會方便一些,另外,基于配置的方式來編寫程序可能修改與維護更為方便,比如資源文件、數據庫來存儲這些可配置的數據。
硬編碼值容易寫錯,比如這個窗體是這個,那個窗體是那個,多個程序員一起開發(fā)可能問題會更多,手一抖就有可能打錯,打錯了,也不會象寫錯變量名一樣有錯誤提示,

 

22.每個窗體、模塊、類模塊里開頭都加上 Option Explicit

這也許是最基本的規(guī)定了,但很多時候都忘記加這個東西,
菜單:工具-選項,勾上“要求變量聲明”

勾上后,以后增加窗體或模塊時,自動會加上 Option Explicit 這個東西上去,

但很多時候維護一些舊的程序,他們都不勾這個選項,一勾就可能有很多問題。

硬編碼一節(jié),如果是數據庫或者資源文件里,應該對一些關鍵的系統(tǒng)數據進行控制,防止有意或無意的錯誤修改系統(tǒng)數據,
比如數據庫的一些系統(tǒng)設置表,應該設置日志跟蹤,根據所有的修改,設置觸發(fā)器,對所有修改進行驗證與控制,設置訪問的權限等等,并且在安裝使用之前配置好所有系統(tǒng)數據。

VB的Collection無法枚舉所有key值,所以采用存儲對象的方式,將key存在對象里,這樣就可以枚舉key值了,
另外,集合還要能判斷是否存在某個key值,

23.更改窗體的文件名

如果要更改窗體文件的文件名,應該在IDE里打開窗體然后另存為。如果直接修改文件的名字,那連同對應的frx文件名也要更改,即使frm和frx兩個文件的文件名都改了,還不行,
還必須把frm文件里引用frx文件名的地方也都改了才行,
用記事本打開 frm 文件,找到那些引用 frx 文件的地方,一個個都改過來才行。

24.關于層的設計

前面說過,一些語言里,在某個窗體里調用別的窗體,你不能訪問別的窗體里的控件,不能直接得到控件的屬性方法,因為那些控件都是受保護的,但VB是例外,這很容易導致混亂,作為一個內部運行的窗體,外界過多的干預,職責沒分清楚,會怎么樣?
所以才有接口的概念,接口其實很簡單,就是提供給外界可以操作的東西,而窗體自身的控件,是不應該給別人操作的,
這是層設計的一個規(guī)矩,就是職責要分清,各做各的,互不干涉,如果需要交互,只能通過約定的通道進行交互。

如何分層,對于大多數的信息系統(tǒng),通常的分層可以參考一些MVC的分層方式,以及VC的Document/View分層方式,
無論采用哪種,都要分清楚職責,但不要照搬,照搬只會帶來更多的危害,不會帶來更多的幫助,“建設有VB特色的分層設計”
比如視圖,可以建立一個視圖層,專門封裝一些對界面操作的公共類,比如表格的操作,表格的格式控制,排序等等,比如文本框的輸入控制,控制只能輸入數字、字符,比如下拉框的綁定、取值,等等都可以封裝,以及更多其它類型的組合封裝,比如權限設置的兩個列表框移動數據,上下兩個表格的連動關聯,等等,

業(yè)務層的封裝,需要分清楚,業(yè)務層不要牽扯到界面,業(yè)務類里不會調用任何控件,如果調用控件,那就是職責沒分清,
其實業(yè)務層細分的話可以分業(yè)務層、數據層,
但實際業(yè)務層和數據層沒必要分的那么細,但對于一些復雜的業(yè)務邏輯,可以分的更細,業(yè)務層控制流程,定制流層,
業(yè)務層和數據層分開,對于有復雜的流程的地方,比如SAP的ERP定制流程就非常有意義了,不過通常意義不分開也行,因為流程控制可能各層都會牽涉得到,無法單靠某一層就能完成流程控制,
MVC里的C這一層能控制一些流程,但MVC也只能在Java里應用得非常好,而Java都是做網站的,網站的界面可以全部自動生成,
而在C/S模式下,這種方式很難實現,復雜的界面控制,輔以復雜的業(yè)務流程,都限制了MVC模式的應用,所以只是模擬實現,而不是照搬。

24.變量盡量限制在最小范圍里使用

盡量不要用全局變量,窗體級變量、模塊級變量也盡量少用,
能在函數里定義的變量,就不要定義為窗體級變量,
如果定義為窗體級變量,什么時候變量被銷毀了,狀態(tài)被改變了,你都不知道,如果再使用變量就會出錯,
你在這個函數里使用變量,然后銷毀它,認為沒問題了,但其它函數也用這個變量,也就會存在問題,
窗體級變量實際也是公共變量,類似于全局變量,只不過使用范圍只能在窗體里使用而已。

函數里聲明變量時,最好用到時再聲明,越遲聲明越好,
避免聲明一個變量,然后在后面很遠的地方才用到,

25.變量命名的規(guī)則

對于一些模塊里定義的方法,最好加上“Pub_”前綴,當然具體是什么前綴根據項目約定來加,但一定要有前綴區(qū)分開來,一則避免名字沖突,二則一看就知道是全局函數。

窗體級的變量統(tǒng)一加上m_前綴,以什么做前綴也可以根據項目約定來加,

函數的參數統(tǒng)一加上p前綴,并且第二個字母大寫,
如:
Private Sub ShowData(pRs AS ADODB.Recordset)...

這樣看函數體的代碼時,一看到p前綴就知道是參數,
控件的命名可以參考相關的規(guī)定,不贅述,

一些普通變量的命名,比如函數里聲明的變量,沒有實際規(guī)定,
一般數量用n前綴,字符串用s前綴,索引用i做前綴,對象用o做前綴,對象也可以添加具體的前綴,比如 Recordset 對象用rs做前綴,等等,盡量增加代碼的可讀性,并保證代碼的簡潔,輸入方便快速。

循環(huán)變量統(tǒng)一用i,j來命名,
而且i,j不要再定義為其它用途的變量,只用做循環(huán)變量,

上面說了變量的前綴,
前綴之后的命名,一般變量要可讀性強,最好一看就知道意思,
好的代碼是自描述的,不用添加注釋也一看就懂(當然注釋還是要有的)。
變量通常采用縮寫的方式,縮寫有時很難看出全稱來,如果看不出來,
那就用全稱,一些常用的名詞,項目需要定好縮寫約定,統(tǒng)一縮寫名稱,
另外,如果采用拼音,最好拼完所有單詞,不要用縮寫,因為縮寫很難猜出意思,
盡量避免用漢語拼音做變量名,有時間多學學英語,如果不知道英語名字,
可以借助一些翻譯工具翻譯出英文名字,翻譯也是很有講究的,因為同樣一個詞語,
翻譯成英文可能有很多翻譯結果,如何選擇,所以平時多閱讀一些英文雜志,
知道它們的英文表達方式。
有的翻譯不出來的,也可以用漢語拼音,漢語拼音盡量用全稱,縮寫很難拼出結果。

27.平常注意整理一些公用函數出來,這樣可以省略大量的重復的代碼,而且可以避免一些重復性的出錯。

比如數組的處理,我定義兩個函數處理數組,這兩個函數在使用數組的地方用的非常多:

Dim As Long, currRow As Long
currRow vsFormat.Row
For To m_ArrLen(comboTitles) 1
    m_ArrAdd aPrevVals, cellText(currRow, comboTitles(i))
Next i

上面我用到兩個自定義的處理數組的函數:m_ArrLen、m_ArrAdd

數組最好規(guī)定一下,下標統(tǒng)一用0來表示,其實VB里不好的地方就是有些地方下標是0,有的地方下標又是1,有點無所適從的感覺,
我定義的動態(tài)數組,下標統(tǒng)一全部用0表示,這也是為了與其它語言統(tǒng)一,沒辦法,用的語言太多了,不統(tǒng)一一下,問題更多。

m_ArrLen 是用來獲取數組長度,VB里沒有獲取數組長度的函數,只有一個 UBound 用來獲取上標,而其它很多語言都有獲取數組長度的函數,特別是遍歷數組時,用 for to ArrLen(Arr) 的方式,幾乎成為一種標準,其實也可以用其它很多種寫法,但除非是特殊需要(比如要從最末尾開始遍歷),最好統(tǒng)一一種寫法。
很多人寫代碼,特別是新手,似乎為了展現自己高超的編程水平一樣,這里用這種寫法,那里用那種寫法,很簡單的問題,搞出四五種寫法,實際上一種寫法就行了。不應該弄一些怪異的寫法來證明自己的水平高,而應該通過解決實踐中的問題來證明自己的水平。
用戶承認才算。

'-- 0.4.1 數組元素個數 arr=數組
Public Function m_ArrLen(arr) As Long
    On Error Resume Next
    m_ArrLen UBound(arr) 1
    If Err.Number <> Then
        m_ArrLen 0
        Err.Clear
    End If
End Function
Public Function m_proLen(arr() As FindItemProperty) As Long
    On Error Resume Next
    m_proLen UBound(arr) 1
    If Err.Number <> Then
        m_proLen 0
        Err.Clear
    End If
End Function

說明,這兩個函數也只是在數組元素比較少時才這么用,如果有上萬個數組元素,最好自己采用最優(yōu)化的方式來做。

'-- 0.4.2 數組增加元素 pArr=數組,pVal=元素值
Public Function m_ArrAdd(pArr, pVal)
    Dim length As Long: length m_ArrLen(pArr)
    ReDim Preserve pArr(length)  'pArr 必須是數組
    pArr(length) pVal
End Function
Public Function m_ProAdd(pArr() As FindItemProperty, pVal As FindItemProperty)
    Dim length As Long: length m_proLen(pArr)
    ReDim Preserve pArr(length)
    pArr(length) pVal
End Function

公共函數的整理是件相當耗時間的工作,是經驗與積累的結晶,
需要反復錘煉才能寫出好的公共函數,如果整理好后,可以按分類進行封裝。

但公共函數的整理也是有一定問題的,就是多用戶開發(fā)時,可能別人并不習慣使用你整理出來的公共函數,他們要學習你定義的函數,他們不會很樂意,如果你是無名之輩,他們更加不樂意去學,即使你寫的很好。

所以整理公共函數也要有節(jié)制,就是如果能用系統(tǒng)函數就用系統(tǒng)函數。

 

'-- 0.4.5 搜索元素索引號
Function m_Index(pArr, pTitle) As Long
    m_Index -1
    Dim As Long
    For To m_ArrLen(pArr) 1
        If Trim(pArr(j)) Trim(pTitle) Then
            m_Index j
            Exit For
        End If
    Next
End Function


'-- 0.4.6 數組連接成字符串 兩種方式:一維數組、鋸齒數組取索引(有個子數組索引號)
Function m_ArrJoin(arr, splitNv As String, Optional rank As Long -1) As String
    Dim As Long, str As String: str ""
    For To m_ArrLen(arr) 1
        If rank -1 Then
            str str splitNv Replace(arr(i), splitNv, ",")
        Else
            str str splitNv Replace(arr(i)(rank), splitNv, ",")
        End If
    Next
    m_ArrJoin mID(str, Len(splitNv) 1)
End Function

'-- 0.4.4 元素值是否在數組里
Public Function m_inArr(pArr, pVal) As Boolean
    m_inArr False
    Dim As Long
    For To m_ArrLen(pArr) 1
        If LCase(Trim(CStr(pArr(i)))) LCase(Trim(CStr(pVal))) Then
            m_inArr True
            Exit For
        End If
    Next
End Function

'-- 0.4.3 數組填充元素 pArr=數組,args=元素列表
Public Function m_ArrFill(pArr, ParamArray args())
    'pArr 必須是數組
    Erase pArr
    Dim i
    For Each In args
        m_ArrAdd pArr, CStr(i)
    Next i
End Function

28.VB資源回收

在74樓寫了一大段介紹對象資源的回收方式,可被河蟹了,
沒備份,看來以后寫之前先在記事本里寫好,然后再發(fā)布到網上,即使被河蟹了,還有存稿。說起這個,就想起文檔管理,
其實文檔管理,象Office的SharePoint就非常好,而且Word本身也支持版本功能,還能關閉時自動保存版本,另外,最好用VSS來控制版本,這樣即使錯誤操作,還可以從歷史版本里恢復出來,比如斷電沒保存,另外,VSS提供Automation,可以在自己的文檔工具里添加VSS版本控制,比如幫助制作軟件等等。象CVS也用的很多。

言歸正傳,VB資源回收比較簡單,如果是創(chuàng)建的對象,不需要處理也自動會回收的,因為對象采用引用計數的方式來回收。而且一出了作用域就自動釋放引用,不用象C++的COM那樣需要調用Release,另外,C++在棧上創(chuàng)建的對象也能實現這種效果。

但對于一些稀有資源,比如數據庫連接,必須調用close關閉,
特別比如象ASP里多用戶連接時,如果不close,那會越來越慢,

29.類、模塊、窗體之間避免交叉引用

避免交叉引用,
比如專門寫一個操作表格的A類,這個類會引用B類里的方法,
那只能是A類引用B類,不能B類又引用A類里的方法,

窗體引用A類,那只能窗體引用A類,不能A類又引用窗體里的控件屬性。

一定要分清楚誰是調用者,誰是被調用者,不能又是調用者,又是被調用的。

既然這樣說,那如果A調用B,B又調用C,那C能不能調用A呢?

記住一個規(guī)則,就是避免循環(huán)引用,
  
A→B
↑↓
D←C

只要不構成一個循環(huán)就行了,層次要分明,
另外,A調用B,B調用C,那A不能直接調用C,只能通過中介B來調用.
層次一定要分明,每個類屬于哪一層一定要分清楚,畫出類圖,類的結構出來,才不至于混亂,特別是類相當多的時候,比如我參與的一個系統(tǒng),有幾百個窗體,上百個類,如果不分清楚,最后就會變成一團麻。

30.關于版本號

如果程序需要給別人使用,一定要管理好版本號,否則這臺機是這個版本,那臺機是那個版本,會亂套的,
版本號由四個數字組成,但VB6里的版本號只能設置3個數字,
分別為主版本、次版本、修正,
在菜單:工程--屬性,“生成”屬性頁可以看到版本,
如果勾選上“自動升級”,則每次編譯新程序時,會將“修正”值加一。

每次編譯發(fā)布時,在文檔里記錄好這次編譯的版本號、編譯時間、以及修改的地方,但很多程序員都不喜歡寫文檔,而且寫文檔攜帶也麻煩,如果沒有帶文檔也就很麻煩了,
那可以將版本號用年月日來標志,
比如版本是:2009.1026.0.2052
表示是2009年10月26日20點52分編譯的,
而修改的內容可以放到版本的備注信息里填寫,
版本號下面的版本信息,類型選擇“注釋”,輸入備注值,
比如備注填寫:
2009.1026.2052:修改了字段aaa
2009.1026.1052:刪除了表bbb
2009.826.1052:增加了表ccc

備注簡要填寫就行。

當然,現在很多成熟的軟件都提供自動更新功能,
程序自動檢測新版本就可以更新了。
如果是信息系統(tǒng),有數據庫服務器(MySql、MsSql、Oracle等),那可以將新程序通過上傳工具上傳到數據庫,
客戶機運行程序就檢測版本號,有新版本就從數據庫里下載最新版本就行了。
如果不是信息系統(tǒng),或者是桌面版數據庫,那可以通過HTTP或者Socket的方式,這兩種方式都需要另建升級服務器,比較麻煩。

一般工廠里的信息系統(tǒng),一般都是內部使用的,所以維護版本號時,能將每臺客戶機的版本號上報給服務器,管理人員看一下各客戶機的版本,就知道哪些沒有更新版本了,即使是自動更新,用戶可能會取消更新的,除非不更新就不給運行程序,
但有時用戶是一天24小時運行著程序的,不能及時更新程序,
所以知道每臺客戶機的版本號,是否是最新版本還是有必要的。

說起這個一天24小時運行的程序,就想起什么時候去檢測版本號,一般打開程序時就會檢測,但用戶有時24小時開著,不關程序,
所以需要定時檢測版本,如果版本需要更新就檢查。

如果工程是VSS管理,那編譯之前需要將工程文件(vbp)簽出, 
這樣"自動升級版本號"時,版本號的修正值才能保存到工程文件里,
版本號信息是保存在vbp文件里的, 用記事本打開vbp文件就可以看到.


本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
全國計算機二級VB復習資料
VB數組
VB基礎教程 - 2
Visual Basic 概述和可視化編程基礎,語言基礎和順序結構,選擇結構,循環(huán)結構,數組
VB6編程基礎知識總結
VB中數據集合對象的應用
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服