View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003452SAS.Планета[All Projects] Хотелкаpublic06-06-2019 08:4807-06-2019 07:27
Reporterzed 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version181221 
Target Version190707Fixed in Version190707 
Summary0003452: Добавить возможность использовать глобальные переменные в PascalScript
DescriptionНужна возможность использовать глобальные переменные для доступа к ним из всех экземпляров скриптов. Так же, нужен глобальный лок, чтобы выполнять какую-то часть скрипта в один поток (выполнение http запроса и получение токена, версии и проч.).

Предлагаю реализовать вот такой интерфейс:


  IPascalScriptGlobal = interface
    procedure Lock;
    procedure Unlock;

    procedure LockRead;
    procedure UnlockRead;

    procedure SetVar(const AVarID: Integer; const AValue: Variant);
    procedure SetVarTS(const AVarID: Integer; const AValue: Variant);

    function GetVar(const AVarID: Integer): Variant;
    function GetVarTS(const AVarID: Integer): Variant;

    function Exists(const AVarID: Integer): Boolean;
    function ExistsTS(const AVarID: Integer): Boolean;
  end;

Функции с приставкой TS (ThreadSafe) должны сами обеспечивать потокобезопасность. Для использования функций без этой приставки, юзеру надо предварительно вызывать Lock функции.
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0018734)
vdemidov (manager)
06-06-2019 15:56

Ты имеешь в виду вообще глобальных переменных или в пределах одного сервиса?
(0018735)
zed (manager)
06-06-2019 17:09

В пределах карты, более глобально пока не требуется.
(0018736)
zed (manager)
07-06-2019 07:27

Доступ к интерфейсу - через переменную Global. Например:


  var
    s: string;
  begin
    ...
    Global.Lock;
    try
      if Global.Exists(0) then begin
        s := Global.GetVar(0);
      end else begin
        Global.SetVar(0, s);
      end;
    finally
      Global.Unlock;
    end;
    ...

- Users who viewed this issue
User List Anonymous (342x), vdemidov (5x), Tolik (1x), zed (7x)
Total Views 355
Last View 15-08-2020 14:24

- Issue History
Date Modified Username Field Change
06-06-2019 08:48 zed New Issue
06-06-2019 08:48 zed Status new => assigned
06-06-2019 08:48 zed Assigned To => zed
06-06-2019 15:56 vdemidov Note Added: 0018734
06-06-2019 17:09 zed Note Added: 0018735
07-06-2019 07:21 zed Status assigned => resolved
07-06-2019 07:21 zed Fixed in Version => 190707
07-06-2019 07:21 zed Resolution open => fixed
07-06-2019 07:27 zed Note Added: 0018736



Copyright © 2007 - 2020 SAS.Planet Team