среда, 5 февраля 2014 г.

Ссылка. Прикручивание Python к Delphi. python4delphi

5 комментариев:

  1. "Прикручивание" получается действительно, очень простым.
    Поддерживаются линейки Python 2.X и 3.X.
    И примеры, опять же. Их много и они по делу...

    ОтветитьУдалить
  2. Хочу всё это "посмотреть". Найти бы время.

    Понятное дело, что "примеры" и "батарейки". Тут есть "за что зацепиться".

    ОтветитьУдалить
  3. В своё время меня особенно впечатлило то, что "из коробки" этого пакета есть обёртки для DataSet и для элементов управления. Первое даёт возможность встраивать в Delphi-приложения возможность вызова скриптов, обрабатывающих данные, представленных, например, в наборах данных AnyDAC (сейчас FireDAC), второе - управлять из кода на Python формами и прочими интерактивными элементами.
    В руководстве и примерах иллюстрируется, как создавать обёртки для необходимых функций и классов Delphi, делая их доступными в скриптах на Python.
    Ну и ещё... Можено не только встраивать Python в Delphi, но и наоборот, создавать на Delphi DLL, доступные в приложениях, изначально разрабатываемых на Python. Но это, впрочем, вполне очевидно.
    На всякий случай: отладчик скриптов, вызываемых из Delphi-кода тоже доступен, в PyDev для Eclipse поддерживает удалённую отладку.

    ОтветитьУдалить
  4. Все прекрасно, только память течет.

    ОтветитьУдалить
  5. > Все прекрасно, только память течет.
    >
    1. Попробуйте финализировать глобальные переменные (переменные уровня модуля, например) в Python, ссылающиеся на объекты, созданные в Delphi.
    Garbage Collector в Python выполнит попытку финализировать такие переменные уже после того, как Delphi-приложение выполнит свою финализацию.
    2. Если Вы используете FastMM - включите отладочный режим чтобы увидеть, что именно не освобождено.
    3. Аккуратнее с PyXInc/DecRef.

    Это то, что можно рекомендовать из общих соображений. Память может "течь" по многим причинам - это очевидно. У нас с этим очень строго, мы используем изменённый нами P4D, но "на вскидку" не припомню, чтобы там так просто "текла память".

    ОтветитьУдалить