IMarker (Runtime error 216)

Программирование на Atlantis: приемы и подходы, обмен опытом

Модераторы: larin, Screw

kutaru
Сообщения: 4
Зарегистрирован: Пн, 08/08/2016 12:52
Имя Фамилия: Сергей Валерьевич

IMarker (Runtime error 216)

Сообщение kutaru » Чт, 22/09/2016 14:45

Коллеги, помогите разобраться с проблемой. Создал тестовый интерфейс

Код: Выделить всё

#include marker.vih

interface TEST_003;
 
  create view
    var
      i: integer;

      curOwner : comp;
      top      : comp;
      tmpnrec  : comp;

      pMarker  : IMarker(marker) new;
      mTreeID  : longInt;

  AS SELECT
    *
  FROM
    FPSTBUD, FPSTBUD FPSTBUD2
  WHERE
    ((
      curOwner == FPSTBUD.CNODE(noindex) AND FPSTBUD.NREC == FPSTBUD2.CNODE(noindex)
    ))
  ;

  screen scrTest;
    bounds (,,80,20);
    controls
    button bounds (2,2,20,4), name = btn1, cmYes, 'Дерево' ('Дерево', hcButton1, scButton1);
  end;

  window WWW
    show (2, 2, 110, 21)

    tree 0 treeTest1 (,, scAtlTreeMark);
      table FPSTBUD
      recMarker = pMarker {FPSTBUD.nrec};
      fields
        FPSTBUD.name  'name' : [15] ,Protect;
        FPSTBUD.nrec  'nrec' : [15] ,Protect;
        FPSTBUD.cnode 'cnode': [15] ,Protect;
    end;  // tree

      handleEvent
        cmInit: {
          //message('cmInit Windows');
          mTreeID := InitMarker('VTB', 8, 1000, 1000, false);
          message('mTreeID := ' + mTreeID);
        }

        cmDefault: {
          message('Следующей строкой будет вылет... :(');
          iMarker(pMarker).ExportTo(mTreeID); // здесь валится (((
        }

        cmDone:
        {
          message('cmDone Windows');
          DoneMarker (mTreeID, 'VTB');
        }
     end; // HandleEvent

     tableEvent table FPSTBUD
        cmTreeTop:  curOwner := top;           
        cmTreeDown: curOwner := FPSTBUD.NRec;
        cmTreeUp:   curOwner := FPSTBUD.cnode;
        //cmInsertRecord: insert current FPSTBUD;
        //cmUpdateRecord: update current FPSTBUD;
        //cmDeleteRecord: {
        //  if (Message('Удалить запись?',YesNo)=cmYes) delete current FPSTBUD;
        //}
     end;// tableEvent table FPSTBUD
  end; //window

handleEvent

  cmInit: {
    ReReadRecord(#FPSTBUD); //
  }

  cmYes: {
    RunWindow(WWW);
  }

end;  // handleEvent

end.

На строке iMarker(pMarker).ExportTo(mTreeID); саппорт выводит сообщение об ошибке
Runtime error 216 (rtl: попытка обращения к некорректному дискриптору)
in streams_.dll at 00034200

и вылетает.

Вопрос: что я делаю не так? :-?
Спасибо.

Аватара пользователя
Screw
корпорация
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: IMarker (Runtime error 216)

Сообщение Screw » Пт, 23/09/2016 12:14

Пример корректный. Это системная проблема. Сегодня зарегистрирую её в ПИР. Номер сообщу дополнительно.

Аватара пользователя
Screw
корпорация
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: IMarker (Runtime error 216)

Сообщение Screw » Пт, 23/09/2016 12:25

102.158946

den
заказчик
Сообщения: 117
Зарегистрирован: Пт, 26/10/2007 14:16
Имя Фамилия: Денис Кучин
Откуда: Геомостпроект НПО

Re: IMarker (Runtime error 216)

Сообщение den » Пт, 23/09/2016 14:08

2 kutaru
причем если избавиться от дополнительного окошка и разместить деревянный формат в главном окошке интерфейса все заработает )

Аватара пользователя
Screw
корпорация
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: IMarker (Runtime error 216)

Сообщение Screw » Пн, 26/09/2016 09:55

Решение 102.158946 будет включено в сборку Атлантиса 5.5.26.0 (выпускается).


Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей