5

由于 vbscript 不支持枚举,是否有任何工作可以解决这个问题?

我有这个代码:

Private Enum dataType
 dt_Nothing
 dt_Boolean
 dt_Decimal
 dt_Double
 dt_Integer
 dt_string
 dt_Array
 dt_NetJSON
End Enum

提前致谢!

4

5 回答 5

8

使用常量是非常合乎逻辑的。另一方面,您可以使用您自己的类的全局实例来模仿 VB 枚举。请注意,它看起来就像枚举,我不确定它是否真的有必要。

Class EnumDataType
    Public  dt_Nothing, dt_Boolean, dt_Decimal
    Private Sub Class_Initialize
        dt_Nothing = 1
        dt_Boolean = 2
        dt_Decimal = 4
    End Sub
End Class

Dim dataType
Set dataType = New EnumDataType

WScript.Echo dataType.dt_Nothing Or dataType.dt_Boolean Or dataType.dt_Decimal
于 2012-06-22T00:54:15.033 回答
5

根据http://www.tek-tips.com/viewthread.cfm?qid=1146844,最好的方法是使用常量。

Const dt_Nothing = Something
Const dt_Boolean = Something
Const dt_Decimal = Something
Const dt_Double = Something
Const dt_Integer = Something
Const dt_string = Something
Const dt_Array = Something
Const dt_NetJSON = Something

我找不到其他方法。我会搜索是否有更好的方法。

于 2012-06-21T13:54:03.707 回答
0

提醒一下,您可以通过(例如)这样做来避免臃肿并使其无痛。

Public Const xupv = 1, xvet = 2, xhid = 3, xban = 4, xrep = 5, xech = 6, xvus = 7, xfDpth = 8, xEds = 9

或这个..

Public Const _
  xupv = 1 _
, xvet = 2 _
, xhid = 3 _
, xban = 4 _
, xrep = 5 _
, xech = 6 _
, xvus = 7 _
, xfDpth = 8 _
, xEds = 9

(这是经过测试的。解析得很好)

于 2021-03-17T18:49:36.857 回答
0

我有时使用的另一种方法是声明字典。喜欢:

昏暗的枚举

设置 oEnum = CreateObject("scripting.Dictionary")

在线程/应用程序初始化时,我确实用我喜欢使用的值填充它,同样我应该使用枚举。

所以 :

oEnum.Add 0, "Enum1"

oEnum.Add 1, "Enum2"

在代码中我喜欢使用枚举的地方,我将这个字典对象称为: someval = oEnum.Items()(index) -> 索引有点像枚举方法。

编辑:您也可以像这样使用它:

oEnum.Add "CONSTANTNAME",整数值

然后您可以通过以下方式获取值:

oEnum.Item(CONSTANTNAME)

Grz约翰

于 2019-04-08T14:23:52.553 回答
-5

这是我发现有效的代码行。

Const navOpenInNewTab = &H800
Set IE1=CreateObject("InternetExplorer.Application")
IE1.Visible=true
IE1.Navigate2 "http://blogs.msdn.com"
IE1.Navigate2 "http://blogs.msdn.com/tonyschr", CLng(navOpenInNewTab)
IE1.Navigate2 "http://blogs.msdn.com/oldnewthing", CLng(navOpenInNewTab)
IE1.Navigate2 "http://msdn.microsoft.com", CLng(navOpenInNewTab)

'不要忘记使用以下代码行关闭 IE:IE1.Quit

于 2013-01-31T20:25:46.910 回答