В своё время меня особенно впечатлило то, что "из коробки" этого пакета есть обёртки для DataSet и для элементов управления. Первое даёт возможность встраивать в Delphi-приложения возможность вызова скриптов, обрабатывающих данные, представленных, например, в наборах данных AnyDAC (сейчас FireDAC), второе - управлять из кода на Python формами и прочими интерактивными элементами. В руководстве и примерах иллюстрируется, как создавать обёртки для необходимых функций и классов Delphi, делая их доступными в скриптах на Python. Ну и ещё... Можено не только встраивать Python в Delphi, но и наоборот, создавать на Delphi DLL, доступные в приложениях, изначально разрабатываемых на Python. Но это, впрочем, вполне очевидно. На всякий случай: отладчик скриптов, вызываемых из Delphi-кода тоже доступен, в PyDev для Eclipse поддерживает удалённую отладку.
> Все прекрасно, только память течет. > 1. Попробуйте финализировать глобальные переменные (переменные уровня модуля, например) в Python, ссылающиеся на объекты, созданные в Delphi. Garbage Collector в Python выполнит попытку финализировать такие переменные уже после того, как Delphi-приложение выполнит свою финализацию. 2. Если Вы используете FastMM - включите отладочный режим чтобы увидеть, что именно не освобождено. 3. Аккуратнее с PyXInc/DecRef.
Это то, что можно рекомендовать из общих соображений. Память может "течь" по многим причинам - это очевидно. У нас с этим очень строго, мы используем изменённый нами P4D, но "на вскидку" не припомню, чтобы там так просто "текла память".
"Прикручивание" получается действительно, очень простым.
ОтветитьУдалитьПоддерживаются линейки Python 2.X и 3.X.
И примеры, опять же. Их много и они по делу...
Хочу всё это "посмотреть". Найти бы время.
ОтветитьУдалитьПонятное дело, что "примеры" и "батарейки". Тут есть "за что зацепиться".
В своё время меня особенно впечатлило то, что "из коробки" этого пакета есть обёртки для DataSet и для элементов управления. Первое даёт возможность встраивать в Delphi-приложения возможность вызова скриптов, обрабатывающих данные, представленных, например, в наборах данных AnyDAC (сейчас FireDAC), второе - управлять из кода на Python формами и прочими интерактивными элементами.
ОтветитьУдалитьВ руководстве и примерах иллюстрируется, как создавать обёртки для необходимых функций и классов Delphi, делая их доступными в скриптах на Python.
Ну и ещё... Можено не только встраивать Python в Delphi, но и наоборот, создавать на Delphi DLL, доступные в приложениях, изначально разрабатываемых на Python. Но это, впрочем, вполне очевидно.
На всякий случай: отладчик скриптов, вызываемых из Delphi-кода тоже доступен, в PyDev для Eclipse поддерживает удалённую отладку.
Все прекрасно, только память течет.
ОтветитьУдалить> Все прекрасно, только память течет.
ОтветитьУдалить>
1. Попробуйте финализировать глобальные переменные (переменные уровня модуля, например) в Python, ссылающиеся на объекты, созданные в Delphi.
Garbage Collector в Python выполнит попытку финализировать такие переменные уже после того, как Delphi-приложение выполнит свою финализацию.
2. Если Вы используете FastMM - включите отладочный режим чтобы увидеть, что именно не освобождено.
3. Аккуратнее с PyXInc/DecRef.
Это то, что можно рекомендовать из общих соображений. Память может "течь" по многим причинам - это очевидно. У нас с этим очень строго, мы используем изменённый нами P4D, но "на вскидку" не припомню, чтобы там так просто "текла память".