All Projects → Zawullon → Fpnativeapi

Zawullon / Fpnativeapi

Licence: mit
1C Native API Extension using FreePascal/Lazarus

Programming Languages

pascal
1382 projects

fpnativeapi

1C Native API Extension using FreePascal/Lazarus.

Description in Russian

Пример Native API расширения для 1С на FreePascal/Lazarus.

Проект для Lazarus IDE (версии >= 1.4.4).

Реализовано три примера:

  1. Полный аналог стандартного примера от 1С для C++. Описание методов и свойств расширения осуществляется вручную. (класс TAddInExample в example.pas, регистрация класса в AddInNative.lpr).

  2. Реализация стандартного примера от 1С для C++ с использованием более удобного способа описания методов и свойств при регистрации класса (класс TAddInEasyExample в easyexample.pas, регистрация класса в AddInNative.lpr).

  3. Попытка добавления возможности использования GUI в расширениях (класс TFormController в guiexample.pas, регистрация класса в AddInNative.lpr). Поскольку LCL написан из расчета работы в основном потоке приложения, пришлось пойти на ряд уступок и упрощений. Как минимум, на данный момент я сходу не нашел возможности усыпить основной цикл обработки сообщений в GUI-потоке при отсутствии необходимости его работы, поэтому просто добавил Sleep :) Из-за этого GUI-поток постоянно использует 15% процессора. Пока нет времени ковырять эту возможность, т.к. мне нужен был только Proof Of Concept самой возможности использования GUI.

Реализовано прозрачное преобразование типов 1С в тип Variant FreePascal.

Для разработки своего расширения необходимо реализовать наследника класса TAddIn из v8addin.pas, и зарегистрировать его в основной секции проекта в файле AddInNative.lpr. Файлы easyexample.pas, example.pas, exampleform.lfm, exampleform.pas и guiexample.pas содержат примеры использования и могут быть удалены при разработке своего расширения. Подключение к 1С скомпилированной библиотеки осуществляется стандартным способом.

Список файлов (части v8addin.pas для удобства вынесены в отдельные включаемые файлы *.inc):

Файл Описание
AddInNative.lpi Настройки проекта
AddInNative.lpr Основной файл проекта. Тут необходимо зарегистрировать реализованные классы расширений
addindefbase.inc Реализация AddInDefBase.h
binarydata.inc Работа с двоичными данными (изображениями) 1С
bindings.inc Трансляция вызовов методов C++ классов в вызовы методов классов FreePascal
componentbase.inc Реализация ComponentBase.h
easyexample.pas Пример расширения с упрощенной регистрацией методов и свойств класса
example.pas Пример расширения с ручной регистрацией методов и свойств класса (как в примере на C++)
exampleform.lfm Данные формы для примера использования GUI
exampleform.pas Модуль формы для примера использования GUI
factory.inc Фабрика классов (эмуляция классов и объектов C++, трансляция вызовов, создание/уничтожение объектов и т.п.)
guiexample.pas Пример расширения с использованием GUI
imemorymanager.inc Реализация IMemoryManager.h
init.inc Инициализация и очистка памяти для эмуляции классов C++
strings.inc Работа со строками
types.inc Реализация types.h
v8addin.pas Базовый класс для реализации расширения (TAddIn)
v8addingui.pas Реализация отдельного потока для работы с GUI
variants.inc Преобразование типов 1С в тип Variant FreePascal
NativeAPI.epf Пример внешней обработки для использования компоненты
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].