Публикации от Семен Хмелев

Об альтернативе Application.ProcessMessages для TWebBrowser и разрыве стека выполнения

  При использовании TWebBrowser существуют две неприятности, во-первых, это сам TWebBrowser =), а во-вторых, это Application.ProcessMessages, который необходимо выполнять чуть ли не на каждое действие (загрузить документ, сменить режим редактирования и т.п).  Использование Application.ProcessMessages может вызывать неожиданные проблемы. Особенно это актуально, когда используются оконные windows сообщения для разрыва стека выполнения. Но нашелся способ, которое позволяет […]

Читать на сайте автора.

Жизнь и восстановление после StackOverflow

Распространено мнение, что StackOverlow — это приговор. Все, что остается приложению — это красиво схлопнуться, не оставив возможности пользователю продолжить работу, сохранить важные данные, и даже информацию об ошибке. Дальше я расскажу, зачем и как можно обрабатывать ошибку переполнения стека, а так же какую «свинью» подложила EurekaLog — инструмент, который должен был обеспечивать нас информацией […]

Читать на сайте автора.

Немного про замыкания

Наверное для тех кто постоянно использует замыкания не будет новостью. Но вот осознал, что может существовать только одно замыкания для какого то конкретного контекста. То есть, анонимных функций может быть несколько, но анонимный класс для контекста создается один. В этом легко убедиться: program closuretest;{$APPTYPE CONSOLE}{$R *.res}uses System.SysUtils;procedure Test;var i: Integer; m: string; proc, proc2: TProc;function […]

Читать на сайте автора.

Delphi Event bus

Решились на работе поддержать Delphi сообщество и начать выкладывать в open source собственные наработки.  Первой ласточкой суждено было стать пакету DelphiEventBus — реализация паттерна проектирования Event Bus.   В Jаva мире есть такие пакеты как guava-libraries, но в Delphi ничего похожего найти не удалось. Потому решено было запилить нечто подобное.  Из статьи Java event bus library comparison можно выцепить характеристики библиотек реализующих шину […]

Читать на сайте автора.

Подводные камни при работе с исключениями в Delphi: Raise Exception, AcquireExceptionObject, исключения операционной системы

    Интересно, на сколько читатель уверен в своих знаниях подводных камней в работе с исключениями в Delphi.  Я решил подготовить три наиболее часто встречаемых ошибки в  рабочем проекте. Надо признаться, некоторые моменты меня удивили. В том числе и ответ на вопрос «в какой момент удаляются объекты исключений».    Каждый может проверить свои познания подводных камней.  В […]

Читать на сайте автора.

Variant := TObject.Create ?

  Думаю многие сталкивались с тем, что иногда требуется в variant передавать blob, ну или TObject. В таких языках как Java и C# все проще, элементарные типы являются объектами ну или умеют упаковываться из значимых типов в объекты. Для всех типов в языке есть базовый тип. В Delphi же, когда тип на этапе компиляции не известен единственным […]

Читать на сайте автора.

Чтение в FinalBuilder VersionInfo из проекта Delphi 7

  С удивлением обнаружил, что на многих форумах у коллег возникают проблемы как при автоматической сборке проекта через FinalBuilder автоматизировать изменение VersionInfo.   Для начала внесем ясность где настройки содержаться.   В Делфи 7 проектах для настроек используется файл .dof, в этот файл IDE сохраняет все настройки проекта. При компиляции на основе этого файла формируется […]

Читать на сайте автора.

IE9 in edit Mode & TWebBrowser = EZeroDivide

  В начале предисловия предисловие   Приветствую тебя случайный гость. Данный блог давно задумывался, но все что то мешало, то не было темы с которой можно начать, то природная лень брала верх над намеченным. Основная цель преследуемая блогом это упорядочивание знаний, закрепление опыта, развитие навыков изложения материала, вообщем как и у всех, т.е. для себя. […]

Читать на сайте автора.