簡體   English   中英

vb6聲明一個數組

[英]vb6 Declare an Array

我有這個代碼:

' Option Explicit
Public Function Clean(Text)
    On Error Resume Next
    ' Dim Chars As ?????????
    Chars = Array("\", "/", ":", "*", "?", """", "<", ">", "|")
    For Each Replaced In Chars
        Text = Replace(Text, Replaced, "")
    Next
    Clean = CStr(Text)
End Function

但是當我使用Option Explicit時出現錯誤,因為沒有聲明Chars,但是我必須使用什么類型來調暗數組( Dim Chars As ??????? )?

更正版本:

Option Explicit

Public Function Clean(ByVal Text As String)
    Dim Chars As Variant
    Dim Replaced As Variant

    Chars = Array("\", "/", ":", "*", "?", """", "<", ">", "|")
    For Each Replaced In Chars
        Text = Replace(Text, Replaced, "")
    Next
    Clean = Text
End Function

通常表現更好的版本:

Option Explicit

Public Function Clean(ByVal Text As String)
    Dim Chars As Variant
    Dim RepIndex As Long

    Chars = Array("\", "/", ":", "*", "?", """", "<", ">", "|")
    For RepIndex = 0 To UBound(Chars)
        Text = Replace$(Text, Chars(RepIndex), "")
    Next
    Clean = Text
End Function

理解變體很重要,應該特別注意使用Variant版本的字符串函數而不是帶有“$”類型裝飾后綴的String類型。

大多數情況下,由於性能成本,您可能希望盡可能避免使用Variants。

這個版本可能表現得更好:

Option Explicit

Public Function Clean(ByVal Text As String)
    Const Chars As String = "\/:*?""<>|"
    Dim RepIndex As Long

    For RepIndex = 1 To Len(Chars)
        Text = Replace$(Text, Mid$(Chars, RepIndex, 1), "")
    Next
    Clean = Text
End Function

VB6中沒有“Char”類型,變量聲明也沒有任何初始化語法。

你可以把它變成一個字符串數組,你不需要一個變體來做到這一點

Dim Chars() As String
Chars = Split("\,/,:,*,?,"",<,>,|", ",")

數組的聲明方式與其他變量相同(即使用關鍵字“Dim”,“Private”,“Public”等),除了數組邊界在變量名后面的括號中編碼(如果是固定長度)正在聲明數組)或一對空括號跟隨變量名稱(如果聲明了可變長度或動態數組)。

 Dim Chars As Variant
 Chars = Array("\", "/", ":", "*", "?", """", "<", ">", "|")

http://www.vb6.us/tutorials/understanding-arrays

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM