我有一些用户定义的类型,例如
Public Type Country
City1 as City
City2 as City
City3 as City
End Type
Public Type City
Name as String
Buildings as Long
People as byte
End Type
我需要做的,是写一个函数。这能够计算我传递给它的任何对象中的变量数量。
这将用于网络优化。我想避免在字符串的情况下发送等于 0 或未设置的数据。
我的最终目标是服务器将计算我的对象中的变量,标记哪些不是 0,并存储在位标记字节中。将字节或多个字节连同不等于 0 的变量一起发送给客户端。
所以我会有一个看起来像这样的数据包:Byte() {PacketIDByte,BitFlagBytes(),NotEmptyData()}
客户端可以访问相同的数据,因此它可以计算对象有多少变量,并确定哪些变量已经发送并需要设置。
希望我足够清楚,(通过这种方式,我希望将我的 58 * 297 字节数据包降低到大约 6to24 * 297 字节)
本质上,我需要知道如何遍历对象中的所有属性。
这是一段不起作用的代码,我觉得这说明了我要完成的工作。
Public Function GetUDTPropertyCount(ByRef AnyObject As Object) As Long
Dim Obj As Object
Dim Count As Long
For Each Obj In AnyObject 'Loop through properties
If TypeOf Obj Is Object Then
Count = Count + GetUDTPropertyCount(Obj)
GoTo NextObj
Else 'If typeOf Obj is a value type then
Count = Count + 1
End If
NextObj:
Next Obj
GetUDTPropertyCount = Count
End Function