Конференция "Corba" » Вызов _Release [Delphi, Windows]
 
  • XProger © (21.07.06 20:54) [0]
    Сегодня столкнулся с проблемой.
    Приложение использует несколько интерфейсов, которые при выходе сами уничтожаются, причём важен порядок их уничтожения (интерфейсы жёстко связаны)
    В Delphi 7 уничтожение происходит в порядке объявления переменных начиная с последнего, в BDS начиная с первого.
    В итоге проблема была решена так:
    var
    {$IF RTLVersion > 15.0}
     snd : ISound;
     inp : IInput;
     vfp : IShader;
     tex : ITexture;
     ogl : IOpenGL;
     wnd : IWindow;
     eX  : IEngine;
     vec : IVector;
     log : ILog;
    {$ELSE}
     log : ILog;
     vec : IVector;
     eX  : IEngine;
     wnd : IWindow;
     ogl : IOpenGL;
     tex : ITexture;
     vfp : IShader;
     inp : IInput;
     snd : ISound;
    {$IFEND}
    Возможно код будет некорректен для других версий Delphi (нет возможности протестировать)
    Существуют ли другие решения? Кто-нибудь сталкивался с подобными проблемами в BDS 2006?
    Не хочется натыкаться на подобные подводные камни... :)

  • isasa © (22.07.06 10:51) [1]
    А, гарантированно, ручками, в нужном порядке ?
    myIntf:=nil;
  • XProger © (22.07.06 13:03) [2]
    isasa, спасибо! Вечно я себе проблемы создаю... :)
 
Конференция "Corba" » Вызов _Release [Delphi, Windows]
Есть новые Нет новых   [134431   +9][b:0][p:0.001]