如何遍历一个未知结构体内部的元素列表及个数   
    
  如     
Public Type tE_aa
    s01 As String * 1
    s02 As String * 8
    s10 As String * 6
    s16 As String * 2
    s18 As String * 5
    s23 As String * 9
    s32 As String * 10
End Type  如何得到这个结构体的元素总数及元素列表({"s01","s02 ","s10 ",...,"s32 "}这样的)?   

解决方案 »

  1.   

    因为现在要处理大量的结构体,所以需要得到所有元素。
    在vc中有人可以实现http://topic.csdn.net/t/20061205/10/5207152.html
    但是vb中不知道如何处理
      

  2.   

    那就硬编码。你将结构声明内的成员部分复制到Excel中,分列取出成员名,用 Excel 公式批量制作同类代码很方便的。
      

  3.   


    '先引用  C:\WINDOWS\system32\tlbinf32.dll
    '在窗体中建立一个Text1的文本框,建立一个List1的列表框
    '复制以下代码至窗口中
    Dim typeApp As New TLI.TLIApplication
    Dim curInfo As InterfaceInfoPrivate Sub Form_Load()
      Set curInfo = typeApp.InterfaceInfoFromObject(Text1)
      For i = 1 To curInfo.Members.Count
        List1.AddItem curInfo.Members(i).Name
      Next
    End Sub
      

  4.   

    再看这次的代码Dim typeApp As New TLI.TLIApplication
    Dim curInfo As InterfaceInfo
    Private Sub Form_Load()
      Set curInfo = typeApp.InterfaceInfoFromObject(Text1)
      For i = 1 To curInfo.Members.Count
        If curInfo.Members(i).MemberId > 0 Then
            If curInfo.Members(i).MemberId <> curInfo.Members(i - 1).MemberId Then List1.AddItem curInfo.Members(i).Name
        End If
      Next
    End Sub
      

  5.   

    TO: fvflove 你这个是获取对象的所有属性和其值吧?也可以获取结构体中的所有成员?不行吧
      

  6.   

    TLI不能对工程内声明的结构使用。
      

  7.   

    这个的难点在于结构的元素长度不定
    变通的方法是把元素声明成Long型,用来保存字符串的指针。
    固定长度的结构元素就很容易遍历了。
      

  8.   

    比如这样:Public Type tE_dd
        lPtr As Long
        lLen As Long
    End TypePublic Type tE_aa
        s01 As tE_dd
        s02 As tE_dd
        s10 As tE_dd
        s16 As tE_dd
        s18 As tE_dd
        s23 As tE_dd
        s32 As tE_dd
    End Type