Тема: Ошибка при записи в пользовательский словарь

Пытаюсь записать булевое в группы 290-299 пользовательского словаря, при этом возникает фатальная ошибка и AutoCAD падает:) В чём может быть проблема? Диапазон групп разрешен для словарей, значение тоже соответствует, другие группы пишутся нормально.
Сейчас решил дописать функцию предварительной проверки соответствия DXF-групп и вносимых данных и незнаю что делать с 290-299? Может вообще их исключить и писать целые числа вместо булевых в другие группы. Функция приведена ниже. При вызове:

Asmi_XRec_Write xrObj, 290, False

AutoCAD 2004 падает с фатальной ошибкой:(

'---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
'       ФУНКЦИЯ ВНЕСЕНИЯ ОДНОЙ ГРУППЫ ДАННЫХ В Х-ЗАПИСЬ
'---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
' АРГУМЕНТЫ:
' XRec - (Variant- Объект AutoCAD) объект ХЗаписи
' пользовательского словаря AutoCAD
' DType - (Integer) DXF-группа куда записываются данные
' DValue - (Variant) Записываемые данные
' Dublicate (Optional Boolean) - Если True то
' разрешается запись дублирующихся DXF-групп
'---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
' ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
' Variant - при успешной записи значение аргумента DValue,
' при ошибке Nothing
'---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
' Библиотека AsmiLIB. Версия функции 1.2. 05/11/2005
' © Александр Смирнов
'---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Function Asmi_XRec_Write(ByVal XRec As AcadXRecord, _
ByVal DType As Integer, ByVal DValue As Variant, _
Optional ByVal Dublicate As Boolean = False) As Variant
Dim exType As Variant
Dim exValue As Variant
Dim arIndex As Long
Dim arCount As Long
Dim isDublicate As Boolean
Dim curType As Integer
XRec.GetXRecordData exType, exValue
If VarType(exType) And vbArray = vbArray _
And Dublicate = True Then
    arIndex = UBound(exType) + 1
    ReDim Preserve exType(0 To arIndex)
    ReDim Preserve exValue(0 To arIndex)
ElseIf VarType(exType) And vbArray = vbArray _
And Dublicate = False Then
    arCount = -1
    isDublicate = False
    Do
        arCount = 1 + arCount
        curType = exType(arCount)
        If curType = DType Then
            arIndex = arCount
            isDublicate = True
        End If
    Loop While (arCount <> UBound(exType) And curType <> DType)
    If isDublicate = False Then
        arIndex = UBound(exType) + 1
        ReDim Preserve exType(0 To arIndex)
        ReDim Preserve exValue(0 To arIndex)
    End If
Else
    arIndex = 0
    ReDim exType(0 To arIndex) As Integer
    ReDim exValue(0 To arIndex) As Variant
End If
exType(arIndex) = DType
exValue(arIndex) = DValue
On Error GoTo Err
XRec.SetXRecordData exType, exValue
Set XRec = Nothing
Asmi_XRec_Write = DValue
Exit Function
Err:
Asmi_XRec_Write = Nothing
End Function

Re: Ошибка при записи в пользовательский словарь

Вдруг это имеет значение:
В справке указан тип массива с DXF кодами, как SHORT, а у Вас INTEGER:

XRecordDataType
Variant (array of short); input-only

Re: Ошибка при записи в пользовательский словарь

В справке указан тип массива с DXF кодами, как SHORT, а у Вас INTEGER:

Short это и есть Integer, т. е. 16 битное целое число, в отличии от длииииинного 32 битного Long.

Re: Ошибка при записи в пользовательский словарь

может конечно и говорю фигню... но можно же трассировать до того момента когда акад падает...
а там подумать :)

Re: Ошибка при записи в пользовательский словарь

> Гость
Трассировал конечно. Падение происходит на строчке
XRec.SetXRecordData exType, exValue . Причём если намерянно сделать несоответствие DXF-групп записываемым данным то вылезает стандартная ошибка Run-Time Error -2145386448(80200030) Invalid DXF Code, но не как не падение када, падает только при попытке записи булевых в вышеназванные группы.