О применении библиотеки FastScript в своих проектах. Часть-1 «Расширение функционала»


На предыдущую страницу…

Скачать/посмотреть:
Полный текст статьи в PDF-форматездесь статья в полном объеме;
Исходники иллюстрирующего примера (d12) в ZIP-архиве ;
Скомпилированный EXE-модуль (иллюстрирующий пример) в ZIP-архиве;
Дополнение к этой статье (ВЕБ-странице) — раздел 4.3 (о локализации программных объектов применительно к китайским иероглифам);
Исходники дополнительного иллюстрирующего примера (к разделу 4.3 статьи в PDF-формате).

См., также:
О библиотеке FastScript;
Соглашения, термины и сокращения.
Часть-2. Входные и вЫходные параметры FS-скрипта (при информационном обмене с внешними инициаторами).
Часть-3. Группировка (распределение по модулям) добавляемых в FS программных объектов.
Часть-4. Парсинг раздела «Uses» FS-скрипта с целями: 1. «отвязки» от «абсолютного пути» в именах файлов; 2. корректной выгрузки библиотечных FS-скриптов, хранящихся в ИБ, и «подключения» их к «вызывающему» FS-скрипту.


1. Общие замечания:

  • 1. Следует отметить, что существенная часть задач, где может быть применена библиотека FastScript, это автоматизация выполнения различного рода прикладных (специфичных) задач конечного Пользователя − самим же Пользователем (в рамках эксплуатируемой ИС).
    При этом, Пользователь (даже очень продвинутый), как правило (все-таки) НЕ является программистом со «всеми вытекающими». Чем более дружественным (комфортным) для него будет инструментарий, тем эффективнее он будет его применять.
    Одним из факторов («облегчающих жизнь» конечному Пользователю), является максимально возможная локализация программного инструментария не только в части GUI, но и в части идентификаторов функций, процедур, переменных и констант (что при использовании FastScript легко реализуемо). См., также, ЗДЕСЬ.
  • 2. В силу того, что возможности библиотеки FastScript существенно велики, а «аппетит растет во время еды», то через довольно-таки небольшой промежуток времени количество «специальных» функций (которые добавляет Программист) может стать знАчимо «большим» (особенно, в «больших» ИС).
    И в этом случае необходимо сразу предусматривать возможность группировки дополнительного функционала по отдельным модулям (которые будут подключаться по мере необходимости в процессе разработки конкретного скрипта или группы скриптов).

2. Расширение функционала FastScript

1. Предполагается, что Читателю доступно «Руководство Разработчика по FastScript» на официальном сайте Правообладателя. Т.е., дублировать изложенную там информацию нет смысла.
2. Автор излагает свой собственный подход к применению библиотеки FastScript, совершенно не претендуя на «истину в последней инстанции».


2.1 Добавление новых функций и процедур

Функция MyFunc_AddToFS(…)

Добавить в FastScript новую процедуру/функцию на «нескольких языках».
Количество «нескольких языков» концептуально не ограничено.
Конечно, библиотека FastScript предоставляет возможность реализовать «несколько языков» и без использования дополнительных средств, например, так:

fsScript1.AddMethod('function INI_Файл_Редактировать(fnINI:string): boolean;', fsCallMethod);
fsScript1.AddMethod('function INI_File_Edit(fnINI:string): boolean;', fsCallMethod);

Но в случае изменений перечня параметров функции/процедуры или добавления «нового языка» при локализации, это может привести к ошибкам из-за банальной потери внимания. См., также, ЗДЕСЬ.

Автор, для этих целей, применяет функцию MyFunc_AddToFS(…).

Входные параметры функции MyFunc_AddToFS(…):

ПараметрНазначение
12
fsScrКомпонент TfsScript (из библиотеки FastScript)
sWhatВид: ‘procedure’ или ‘function’
sFuncResТип возвр. значения для ‘function’ или пустая строка для ‘procedure’
sListFuncNamesПеречень (через точку с запятой) идентификаторов (наименований) функции/процедуры
sFuncScriptТекст «объявления» функции/процедуры (без окаймляющих скобок)
fsCallMethodФункция (метод) формы(TForm), где реализована обработка вызова функции/процедуры

Дополнительные (используемые) функции:
Get_CountWords_In_String(…);
Get_Word_From_String(…).

Примеры использования.

Текст «нашей» процедуры, где реализован соответствующий функционал, см ЗДЕСЬ.

Текст «нашей» процедуры, где реализован соответствующий функционал, см ЗДЕСЬ.

Реализация вызовов объявленных процедур и функций

В документации к FastScript приведено детальное и корректное описАние этого процесса.

Здесь – лишь в качестве иллюстрации к примерам, приведенным выше.

ВАЖНО!!! Обработчик типа TfsCallMethodEvent должен быть обязательно методом формы (TForm).

В общем-то, это не «такое уж страшное» ограничение (и даже наоборот, это вполне можно рассматривать, как преимущество).
Поскольку, в дальнейшем, можно использовать формы (TForm), как «контейнеры» для группировки новых (добавляемых) процедур, функций, глобальных переменных (в случае необходимости) и констант, если в этом возникнет необходимость.
На рисунках ниже приведены скрины исходников, применительно к примерам, приведенным выше.

Исходные тексты используемых «наших» функций/процедур в качестве «добавляемых в FS»:
ЭкранКурсор(…); Screen_Cursor(…);
ФайлыСписок_Получить(…); Files_List_Get(…).

Тестирование того, что выше наработали…

«План – есть план, пока он план», но «лучше один раз увидеть, чем десять раз услышать».

См., также:
Текст файла fs01ef_main.pas (в HTML-формате);
Текст файла fs01ef_main.dfm (в HTML-формате);
Исходники иллюстрирующего примера (d12) в ZIP-архиве;
Скомпилированный EXE-модуль (иллюстрирующий пример) в ZIP-архиве.

На рисунке ниже приведен исходный текст FS-скрипта для тестирования
(ясное дело, что значение константы «МаскаФайлов» должно быть указано корректно!).

На рисунке ниже приведен исходный текст обработчика события: нажатие на кнопку «Выполнить скрипт» (см. рисунок выше).

На рисунке ниже приведен скрин экрана (результат выполнения ShowMessage(Список.Text), см. рисунок 3 и рисунок ниже).


2.2 Добавление новых констант

При добавлении новых констант Автор использует тот же подход, что и при добавлении новых процедур и функций.

Автор, для этих целей, применяет функцию MyConst_AddToFS(…).

Функция MyConst_AddToFS(…)

Входные параметры функции MyConst_AddToFS(…):

ПараметрНазначение
12
fsScrКомпонент TfsScript (из библиотеки FastScript)
sListConstNamesПеречень (через точку с запятой) идентификаторов (наименований) константы
sConstTypeТип константы (из перечня допустимых, см. Руководство)
sConstValЗначение константы

Дополнительные (используемые) функции:
Get_CountWords_In_String(…);
Get_Word_From_String(…).

См., также:
Текст файла fs01ef_main.pas (в HTML-формате);
Текст файла fs01ef_main.dfm (в HTML-формате);
Исходники иллюстрирующего примера (d12) в ZIP-архиве;
Скомпилированный EXE-модуль (иллюстрирующий пример) в ZIP-архиве.

На рисунке ниже приведен исходный текст обработчика события: нажатие на кнопку «Выполнить скрипт» (см. рисунок 3).

На рисунке ниже приведен скрин экрана (текст Скрипта и результат его выполнения).

См., также, ЗДЕСЬ.

Важно! Использование констант представляет, также, практический интерес, как механизм передачи входных параметров для Скрипта (хранящегося, например, в ИБ) от внешних инициаторов информационного обмена. В качестве таких инициаторов могут выступать, например, какие-либо «узлы» в распределенной (в том числе и иерархической) сети ИС. Эту тему предполагается более подробно затронуть в одной из последующих статей.

Впрочем, «Если хочешь рассмешить Бога – расскажи ему о своих планах»… 🙂


2.3 Добавление новых переменных

Переменные конкретного FS-скрипта актуальны, как правило, именно в контексте этого Скрипта (и/или) другого Скрипта (если используется «Uses»).
Поэтому, Автор не «злоупотребляет» возможностью библиотеки FastScript добавлять переменные вне текста самого Скрипта.
Техническое описание механизма добавления переменных представлено в Руководстве.

Добавление новой переменной (штатными средствами FastScript):

См., также, ЗДЕСЬ.

Важно! Использование переменных представляет, также, практический интерес, как механизм передачи вЫходных параметров из Скрипта (хранящегося, например, в ИБ) для внешних инициаторов информационного обмена (см., также, раздел выше «Функция MyConst_AddToFS(…)»).
В этом случае, как раз и может быть использован «штатный», для FastScript, механизм создания переменных Скрипта.


Скачать/посмотреть:

См., также:

На предыдущую cтраницу.


Дата: 20.02.2024