我想使用我自己的类(Markers
类)的全局对象数组,它们从记录集中加载数据。我可以将记录集中的数据加载到数组中的对象中,但是当我尝试访问数组中某个对象中的值时,会出现“Object Required”错误。我不明白为什么我的Markers()
类Marker
类对象被破坏或超出范围。
Dim Markers(6)
Public Function GetItemSet(ByVal item)
'gets user input and returns a recordset object (just 1 record/row) from a SQL database
'working properly
End Function
Public Sub LoadMarkers(ByVal rs)
For i = 0 to 6
Set Markers(i) = New Marker
Next
MsgBox rs.Fields.Item("TextLine1").Value
Markers(0).TextLine(0) = rs.Fields.Item("TextLine1").Value
Markers(0).TextLine(1) = rs.Fields.Item("TextLine2").Value
'the above is just what I'm using to test functionality, no errors so far
End Sub
Public Function GetMarkerText(ByVal mrkr, ByVal line)
GetMarkerText = Markers(mrkr).TextLine(line)
End Function
在另一个脚本中,我尝试直接使用Markers(0).TextLine(0)
以及调用GetMarkerText(0,0)
来获取值...这两种方法都会导致对象需要出错,我直接尝试访问它或GetMarkerText
的一行代码。 LoadMarkers
sub似乎没有问题访问Markers()
类Marker
类对象,但是在子结束之后它似乎被破坏了?我是VBScript的新手,所以也许我只是不太明白范围是如何工作的,但我不明白为什么这不起作用。有什么想法吗?
Markers
类定义的相关部分:
Class Marker
Private m_Name
Private m_TxtLines(6)
Private m_ItemNum
Private m_FontSize
Private m_FontType
Private m_Length
Private Sub Class_Initialize( )
m_Name = "Unnamed"
m_ItemNum = 0
m_Length = 1
For i = 0 To 6
m_TxtLines(i) = ""
Next
m_FontSize = 8
m_FontType = "Arial"
End Sub
'Name Property
Public Property Get Name
Name = m_Name
End Property
Public Property Let Name(marker)
m_Name = marker
End Property
'TextLine Property for holding up to 7 lines of marker text
Public Property Get TextLine(index)
TextLine(index) = m_TxtLines(index)
End Property
Public Property Let TextLine(index, txt)
m_TxtLines(index) = txt
End Property
'ItemNum Property
Public Property Get ItemNum
ItemNum = m_ItemNum
End Property
Public Property Let ItemNum(num)
m_ItemNum = num
End Property
'Length Property
Public Property Get Length
Length = m_Length
End Property
Public Property Let Length(len)
m_Length = len
End Property
'FontSize Property
Public Property Get FontSize
FontSize = m_FontSize
End Property
Public Property Let FontSize(pts)
m_FontSize = pts
End Property
'FontType Property
Public Property Get FontType
FontType = m_FontType
End Property
Public Property Let FontType(font)
m_FontType = font
End Property
'Haven't added my methods in yet
End Class
答案 0 :(得分:2)
在盯着课堂定义一段时间之后,我想可能已经发现了罪魁祸首。
......中的作业
Public Property Get TextLine(index)
不正确。它应该指向......
TextLine = m_TxtLine(index)
不
TextLine(index) = m_TxtLine(index)