Rob_Kish 发表于 2005-1-3 08:13:04

getxRecords方法问题

你好,沼泽,
我一直在玩VBA(快门...),这不是我的专业领域,我试图回答一位法国绅士的问题,他正试图在字典中存储和检索信息。
下面是我尝试获取和检索数据的尝试。
我遇到的问题是getxRecords方法

objXRecordReturn.GetXRecordData XRecordDataTypeReturn, XRecordDataReturn

它似乎没有检索数据类型或数据并返回空白。
我使用lisp检查过,数据就在那里。
你们中有人有一些模块吗?或者你知道为什么我没有得到正确的数据吗?
Peter Jamtgaard

Option Explicit
Public Sub Test()
    Dim arrMyData(3) As Variant
    arrMyData(0) = "hello"
    arrMyData(1) = "There"
    arrMyData(2) = "jean"
    CreateDictionary "test7"
    CreateXRecords "test7", arrMyData
    ReadXRecords "test7"
End Sub
Private Sub CreateDictionary(strDictionaryName As String)
    Dim objDictionary As AcadDictionary
    On Error Resume Next
    Set objDictionary = ThisDrawing.Dictionaries.Add(strDictionaryName)
    objDictionary.Delete
    Set objDictionary = ThisDrawing.Dictionaries.Add(strDictionaryName)
End Sub
Private Sub CreateXRecords(strDictionaryName As String, arrMyData() As Variant)
    Dim intIndex As Integer
    Dim objDictionary As AcadDictionary
    Dim objXRecord As AcadXRecord
    Dim XRecordData(0) As Variant
    Dim XRecordDataType(0) As Integer
    Set objDictionary = ThisDrawing.Dictionaries.Item(strDictionaryName)
    MsgBox "Storing XRecord Information: "
    For intIndex = 0 To UBound(arrMyData) - 1
      Set objXRecord = objDictionary.AddXRecord(CStr(intIndex) & "A")
      XRecordDataType(0) = 1
      XRecordData(0) = arrMyData(intIndex)
      objXRecord.SetXRecordData XRecordDataType, XRecordData
    Next intIndex
End Sub
Private Sub ReadXRecords(strDictionaryName As String)
    MsgBox "Retieving XRecord Information: "
    Dim intIndex As Integer
    Dim arrMyDataReturn(3) As Variant
    Dim objDictionary As AcadDictionary
    Dim objXRecordReturn As AcadXRecord
    Dim XRecordDataReturn(0) As Variant
    Dim XRecordDataTypeReturn(0) As Integer
    Set objDictionary = ThisDrawing.Dictionaries.Item(strDictionaryName)
    For intIndex = 0 To objDictionary.Count - 1
      Set objXRecordReturn = objDictionary.Item(CStr(intIndex) & "A")
      MsgBox objDictionary.Name & " Item: " & objXRecordReturn.Name
      objXRecordReturn.GetXRecordData XRecordDataTypeReturn, XRecordDataReturn
      MsgBox "XRecordDataTypeReturn: " & XRecordDataTypeReturn(0)
      arrMyDataReturn(intIndex) = XRecordDataReturn(0)
      MsgBox "XRecordDataReturn: " & XRecordDataReturn(0)
    Next intIndex
    MsgBox arrMyDataReturn(0) & " " & arrMyDataReturn(1) & " " & arrMyDataReturn(2)
End Sub

**** Hidden Message *****

96616 发表于 2005-1-3 20:06:50

嗨,彼得...
似乎是唯一的关键问题(意思是拒绝完成...没有误差)取决于“载体”的尺寸。
在ReadXRecords中,两个接收器都必须是纯变量(不能以数组的形式划分维度;它们必须是灵活的)。从两者中移除(0 ),您的代码运行良好。


' use this instead
    Dim XRecordDataReturn As Variant
    Dim XRecordDataTypeReturn As Variant
    ...
页: [1]
查看完整版本: getxRecords方法问题