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

Различия

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

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

Следующая версия
Предыдущая версия
special_params_in_scripts [15.10.2021 08:04]
Lingri создано
special_params_in_scripts [24.02.2022 06:22] (текущий)
Строка 7: Строка 7:
 {{:​pasted:​20211015-075314.png}} {{:​pasted:​20211015-075314.png}}
  
-Переменная scriptPercent не объявлена локально. Она попадает в скрипт "​извне"​. После отработки скрипта стоит вывод значения этой переменной.+Переменная scriptPercent не объявлена локально. Она попадает в скрипт "​извне"​. После отработки скрипта стоит вывод значения этой переменной. ​Она используется для отображения [[https://​doc.agb.is/​calc_info_script|информации о расчёте бонусов за заказ]]
  
 ===== Техническая часть ===== ===== Техническая часть =====
 Чтобы подобное реализовать,​ нужно доработать модуль **ScriptFunctions.pas**:​ Чтобы подобное реализовать,​ нужно доработать модуль **ScriptFunctions.pas**:​
-  - В тип TExtScriptResInfo добавляем нужное поле;+  - В тип 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));//​
  
-{{: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 SrcPIFVariant):​ 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'​));​