мета-данные страницы
Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
special_params_in_scripts [15.10.2021 08:04] Lingri создано |
special_params_in_scripts [15.10.2021 09:49] Lingri [Базовые типы переменных в скриптах] |
||
---|---|---|---|
Строка 11: | Строка 11: | ||
===== Техническая часть ===== | ===== Техническая часть ===== | ||
Чтобы подобное реализовать, нужно доработать модуль **ScriptFunctions.pas**: | Чтобы подобное реализовать, нужно доработать модуль **ScriptFunctions.pas**: | ||
- | - В тип TExtScriptResInfo добавляем нужное поле; | + | - В тип TExtScriptResInfo добавляем нужное поле; {{:pasted:20211015-075714.png}} |
+ | - В процедуре **TScriptExecutor.PSScriptCompile** регистрируем название новой переменной: //Sender.AddRegisteredPTRVariable('scriptItogSum', 'double');// | ||
+ | - В процедуре **TScriptExecutor.PSScriptExecute** связываем переменную с полем записи **ExtScriptResInfo**: //PSScript.SetPointerToData('scriptItogSum', @ExtScriptResInfo.scriptItogSum, PSScript.FindBaseType(btDouble));// | ||
+ | - В процедуре **TScriptExecutor.PSScriptAfterExecute** делаем вывод этой переменных в запись **ExtScriptResInfo**: //ExtScriptResInfo.scriptPercent := VGetInt(PSScript.GetVariable('scriptPercent'));// | ||
- | {{:pasted:20211015-075714.png}} | + | ==== Базовые типы переменных в скриптах ==== |
+ | ^ Базовый тип в скриптере ^ Соответствующий тип 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; | ||
- | - В процедуре TScriptExecutor.PSScriptCompile регистрируем название новой переменной: Sender.AddRegisteredPTRVariable('scriptItogSum', 'double'); | ||
- | - В процедуре TScriptExecutor.PSScriptExecute связываем переменную с полем записи ExtScriptResInfo: PSScript.SetPointerToData('scriptItogSum', @ExtScriptResInfo.scriptItogSum, PSScript.FindBaseType(btDouble)); | ||
- | В качестве типа здесь нужно указывать именно базовые типы, одни из следующих: | ||
- | - В процедуре TScriptExecutor.PSScriptAfterExecute делаем вывод этой переменных в запись ExtScriptResInfo: ExtScriptResInfo.scriptPercent := VGetInt(PSScript.GetVariable('scriptPercent')); | ||