繁体   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