1 |
joko |
1.1 |
VERSION 1.0 CLASS |
2 |
|
|
BEGIN |
3 |
|
|
MultiUse = -1 'True |
4 |
|
|
Persistable = 0 'NotPersistable |
5 |
|
|
DataBindingBehavior = 0 'vbNone |
6 |
|
|
DataSourceBehavior = 0 'vbNone |
7 |
|
|
MTSTransactionMode = 0 'NotAnMTSObject |
8 |
|
|
END |
9 |
|
|
Attribute VB_Name = "CVector" |
10 |
|
|
Attribute VB_GlobalNameSpace = False |
11 |
|
|
Attribute VB_Creatable = True |
12 |
|
|
Attribute VB_PredeclaredId = False |
13 |
|
|
Attribute VB_Exposed = False |
14 |
|
|
' via: http://www.avdf.com/oct97/art_vb001.html |
15 |
|
|
|
16 |
|
|
Option Explicit |
17 |
|
|
|
18 |
|
|
Private av() As Variant |
19 |
|
|
Private nLast As Long |
20 |
|
|
Private nChunk As Long |
21 |
|
|
|
22 |
|
|
Public Property Get Chunk() As Long |
23 |
|
|
Chunk = nChunk |
24 |
|
|
End Property |
25 |
|
|
|
26 |
|
|
Public Property Let Chunk(NewValue As Long) |
27 |
|
|
If NewValue = nChunk Then Exit Property |
28 |
|
|
If NewValue < 1 Then |
29 |
|
|
Err.Raise vbObjectError Or 1002, "CVector.Chunk", "Chunk is less than one" |
30 |
|
|
Exit Property |
31 |
|
|
End If |
32 |
|
|
nChunk = NewValue |
33 |
|
|
End Property |
34 |
|
|
|
35 |
|
|
Public Property Get Last() As Long |
36 |
|
|
Last = nLast |
37 |
|
|
End Property |
38 |
|
|
|
39 |
|
|
Public Property Let Last(ByVal NewLast As Long) |
40 |
|
|
If NewLast = nLast Then Exit Property |
41 |
|
|
If NewLast < 1 Then Exit Property |
42 |
|
|
ReDim Preserve av(1 To NewLast) As Variant |
43 |
|
|
nLast = NewLast |
44 |
|
|
End Property |
45 |
|
|
|
46 |
|
|
Public Property Let item(ByVal Index As Long, ByVal V As Variant) |
47 |
|
|
|
48 |
|
|
If Index < 1 Then |
49 |
|
|
Err.Raise vbObjectError Or 1000, "CVector.Let", "Index is less than one" |
50 |
|
|
Exit Property |
51 |
|
|
End If |
52 |
|
|
|
53 |
|
|
On Error GoTo Error_Handler |
54 |
|
|
|
55 |
|
|
av(Index) = V |
56 |
|
|
|
57 |
|
|
If Index > nLast Then |
58 |
|
|
nLast = Index |
59 |
|
|
End If |
60 |
|
|
|
61 |
|
|
Exit Property |
62 |
|
|
|
63 |
|
|
Error_Handler: |
64 |
|
|
|
65 |
|
|
If Index > UBound(av) Then |
66 |
|
|
ReDim Preserve av(1 To Index + nChunk) As Variant |
67 |
|
|
Resume |
68 |
|
|
End If |
69 |
|
|
Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext |
70 |
|
|
|
71 |
|
|
End Property |
72 |
|
|
|
73 |
|
|
Public Property Set item(ByVal Index As Long, ByVal V As Variant) |
74 |
|
|
|
75 |
|
|
If Index < 1 Then |
76 |
|
|
Err.Raise vbObjectError Or 1000, "CVector.Let", "Index is less than one" |
77 |
|
|
Exit Property |
78 |
|
|
End If |
79 |
|
|
|
80 |
|
|
On Error GoTo Error_Handler |
81 |
|
|
|
82 |
|
|
Set av(Index) = V |
83 |
|
|
|
84 |
|
|
If Index > nLast Then |
85 |
|
|
nLast = Index |
86 |
|
|
End If |
87 |
|
|
|
88 |
|
|
Exit Property |
89 |
|
|
|
90 |
|
|
Error_Handler: |
91 |
|
|
|
92 |
|
|
If Index > UBound(av) Then |
93 |
|
|
ReDim Preserve av(1 To Index + nChunk) As Variant |
94 |
|
|
Resume |
95 |
|
|
End If |
96 |
|
|
Err.Raise Err.Number, Err.Source, _ |
97 |
|
|
Err.Description, Err.HelpFile, Err.HelpContext |
98 |
|
|
|
99 |
|
|
End Property |
100 |
|
|
|
101 |
|
|
Public Property Get item(ByVal Index As Long) As Variant |
102 |
|
|
Attribute item.VB_UserMemId = 0 |
103 |
|
|
|
104 |
|
|
On Error Resume Next |
105 |
|
|
|
106 |
|
|
If Index < 1 Then |
107 |
|
|
Err.Raise vbObjectError Or 1000, _ |
108 |
|
|
"CVector.Get", "Index is less than one" |
109 |
|
|
Exit Property |
110 |
|
|
End If |
111 |
|
|
|
112 |
|
|
If Index > nLast Then |
113 |
|
|
Err.Raise vbObjectError Or 1001, _ |
114 |
|
|
"CVector.Get", "Index is beyond end of vector" |
115 |
|
|
Exit Property |
116 |
|
|
End If |
117 |
|
|
|
118 |
|
|
If IsObject(av(Index)) Then |
119 |
|
|
Set item = av(Index) |
120 |
|
|
Else |
121 |
|
|
item = av(Index) |
122 |
|
|
End If |
123 |
|
|
|
124 |
|
|
End Property |
125 |
|
|
|
126 |
|
|
Private Sub Class_Initialize() |
127 |
|
|
nChunk = 10 |
128 |
|
|
nLast = 1 |
129 |
|
|
ReDim av(1 To nChunk) As Variant |
130 |
|
|
End Sub |
131 |
|
|
|
132 |
|
|
Public Sub add(value As String) |
133 |
|
|
Dim newIdx As String |
134 |
|
|
'newIdx = Me.Last() + 1 |
135 |
|
|
'newIdx = Me.Last() |
136 |
|
|
newIdx = nLast |
137 |
|
|
Me.item(newIdx) = value |
138 |
|
|
nLast = nLast + 1 |
139 |
|
|
End Sub |