мета-данные страницы
  •  

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
special_params_in_scripts [22.02.2022 06:12]
Lingri [Техническая часть]
special_params_in_scripts [24.02.2022 06:22]
Строка 1: Строка 1:
-====== Специальные параметры в скриптах ДС-ВДС ====== 
-Со временем всё больше появляется необходимость в доступе к внутренним данным прорабатываемого скрипта. Например,​ для определения процента начисления бонусов по заказу. 
- 
-Скриптер позволяет передать в него внешнюю переменную,​ которую он сможет спокойно использовать,​ менять её значение,​ и по результату выполнения скрипта это значение можно получить во внешних обработках. 
- 
-Визуально это примерно так: 
-{{:​pasted:​20211015-075314.png}} 
- 
-Переменная scriptPercent не объявлена локально. Она попадает в скрипт "​извне"​. После отработки скрипта стоит вывод значения этой переменной. 
- 
-===== Техническая часть ===== 
-Чтобы подобное реализовать,​ нужно доработать модуль **ScriptFunctions.pas**:​ 
-  - В тип TExtScriptResInfo добавляем нужное поле; {{:​pasted:​20211015-075714.png}} 
-  - В процедуре **TScriptExecutor.PSScriptCompile**,​ являющейся обработчиком PSSCript.OnCompile,​ регистрируем название новой переменной:​ //​Sender.AddRegisteredPTRVariable('​scriptItogSum',​ '​double'​);//​ 
-  - В процедуре **TScriptExecutor.PSScriptExecute**,​ являющейся обработчиком PSSCript.OnExecute,​ связываем переменную с полем записи **ExtScriptResInfo**:​ //​PSScript.SetPointerToData('​scriptItogSum',​ @ExtScriptResInfo.scriptItogSum,​ PSScript.FindBaseType(btDouble));//​ 
-  - В процедуре **TScriptExecutor.PSScriptAfterExecute**,​ являющейся обработчиком PSSCript.PSScriptAfterExecute,​ делаем вывод этой переменных в запись **ExtScriptResInfo**:​ //​ExtScriptResInfo.scriptPercent := VGetInt(PSScript.GetVariable('​scriptPercent'​));//​ 
- 
- 
-==== Базовые типы переменных в скриптах ==== 
-^ Базовый тип в скриптере ​  ^ Соответствующий тип Delphi ​  ^ 
-| btU8        | Byte      | 
-| btS8        | ShortInt ​ | 
-| btU16       | Word      | 
-| btS16       | SmallInt ​ | 
-| btU32       | Longword ​ | 
-| btS32       | LongInt ​  | 
-| btS64       | Int64     | 
-| btSingle ​   | Single ​   | 
-| btDouble ​   | Double ​   | 
-| btExtended ​ | Extended ​ | 
-| btVariant ​  | Variant ​  | 
-| btString ​   | String ​   | 
-| btWideString| WideString| 
-| btChar ​     | Char      | 
-| btWideChar ​ | WideChar ​ | 
-| || 
-==== Функции получения данных ==== 
- 
-Весь список возможных функций получения данных:​ 
-  * function VGetUInt(const Src: PIFVariant):​ Cardinal; 
-  * function VGetInt64(const Src: PIFVariant):​ Int64; 
-  * function VGetReal(const Src: PIFVariant):​ Extended; 
-  * function VGetCurrency(const Src: PIFVariant):​ Currency; 
-  * function VGetInt(const Src: PIFVariant):​ Longint; 
-  * function VGetString(const Src: PIFVariant):​ String; 
-  * function VGetAnsiString(const Src: PIFVariant):​ tbtString; 
-  * function VGetWideString(const Src: PIFVariant):​ tbtWideString;​ 
-  * function VGetUnicodeString(const Src: PIFVariant):​ tbtunicodestring;​ 
- 
- 
- 
-