Тема: Не срабатывает "On error goto"

Примерный фрагмент чтения расширенных данных в VB 6.0. Первый встреченный примитив без расширенных данных удаляется нормально, на следующем вылетает с ошибкой 13 (Type mismatch) на строке strDat = xdataOut(1). Как будто при втором проходе не срабатывает ператор On error
   For ii = 0 To objSelSet.Count - 1
      Set objEnt = objSelSet.Item(ii)
      strDat = ""
      objEnt.GetXData "", xtypeOut, xdataOut
      On Error GoTo not_ext
      strDat = xdataOut(1)
      GoTo yes_ext
not_ext:
       ObjEnt.Delete
yes_ext:
    next

Re: Не срабатывает "On error goto"

Разберись, как у тебя объявлена переменая ObjEnt

Re: Не срабатывает "On error goto"

> Олег
Во-первых, почему strDat = xdataOut(1). У Вас массивы с 1 начинаются?
И, во-вторых. И это главное. Люди, видя подобные "шедевры" программирования, укрепляются во мнении, что VB это ...., и ...., и ..... Книжки надо читать. Зачем Вам GoTo? Без него что, нельзя обойтись? Кроме того объекты в коллекции лучше перебирать с помощью цикла For Each Next (хотя бы с точки зрения быстродействия).

Dim ObjEnt As AcadEntity
Dim objSelSet As AcadSelectionSet
...........
For Each ObjEnt In objSelSet
    ObjEnt.GetXData "", xtypeOut, xdataOut
    If IsArray(xtypeOut) = False Then
        ObjEnt.Delete
    End If
Next
...........

Re: Не срабатывает "On error goto"

А несоответсвие типов выдается совершенно справедливо. Рискну предположить, что, судя по strDat = "" , переменная strDat объявлена как String. Соответственно если в расширенных данных примитива сохранена, например, трехмерная точка, то.... И никакой GoTo не поможет.