Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Direktiva skriptu #pragma systému PROMOTIC

Direktiva skriptu #pragma umožňuje ve skriptu ovlivňovat způsob použití tohoto skriptu v systému PROMOTIC a také případně modifikovat vlastní obsah skriptu.

Ke zpracování direktivy #pragma dochází ve chvíli překladu tohoto skriptu a tím se liší od volání metod při spuštění skriptu. V případě Web aplikace se skripty obrazu sice spouští na klientu, ale zpracování direktivy #pragma probíhá na serveru a klient získá již zpracovaný skript.

Systém PROMOTIC při překladu skriptu zpracuje danou direktivu #pragma a kód s vlastní direktivou #pragma ze skriptu odstraní. Na místo bývalé direktivy #pragma, ale může být vložen kód nový, jako výsledek zpracování příslušné direktivy #pragma.

Upozornění! Direktiva skriptu #pragma je vždy zapsána v poznámce skriptu, tzn. v VBScript za znakem "apostrof" ('), v JavaScript za dvěma znaky "lomítko" (//).

 
Existují dva druhy direktiv #pragma:
 

#pragma variable

Slouží k modifikaci vlastního skriptu, to znamená, že do skriptu je vložen kód nový, jako výsledek vyhodnocení příslušné direktivy #pragma.

Tato direktiva skriptu vloží do skriptu kód se založením lokální proměnné ve skriptu s příslušným názvem (příkazem var pro JavaScript nebo Dim pro VBScript) a dále kód pro inicializaci proměnné na určitou požadovanou hodnotu (hodnotou může být i reference na objekt).

Vložený kód, vzniklý vyhodnocením jedné a téže direktivy #pragma v tomtéž skriptu se může lišit například podle toho, zda je skript v lokálním nebo Web obraze, atd.

Tento typ direktivy #pragma jednak zpřehledňuje skripty, umožňuje systémově podchytit odkazy na objekty a také umožňuje podchytit některé rozdílnosti mezi lokálním a Web obrazem.

 
#pragma variable x = Macro("makro výraz"):

Umožňuje vyhodnotit makro výraz. Ve skriptu založí lokální proměnnou a nastaví její počáteční hodnotu na hodnotu výsledku vyhodnocení makro výrazu. Slouží zejména k načtení lokalizačního textu (Makro výraz $.text). V případě Webu dochází k vyhodnocení výrazu už na serveru, takže vyhodnocení direktivy #pragma má přístup k datům a souborům serveru.

Například '#pragma variable sComment = Macro("$.text('sys','comment')")

Jinou možností jak získat lokalizovaný text je pomocí Makro výraz $.text nebo EvalMacro.

 
#pragma variable x = PmaObjectRef("cesta"):

Umožňuje získat referenci na Pma objekt ve stromu Pma objektů nebo jeho implementační podobjekt. Ve skriptu založí lokální proměnnou a nastaví její počáteční hodnotu na odkaz na požadovaný objekt.

Reference na objekt získaný tímto způsobem je výhodný, protože odkaz je známý už ve vývojovém prostředí PROMOTIC, to znamená, že systém PROMOTIC o tomto odkazu ví a je znám typ odkazovaného objektu, což jednou umožní v editoru skriptů inteligentní nápovědu se seznamem metod a vlastností objektu, atd.

Pro pro získání objektu na dynamické (dopředu neznámé) cestě slouží metoda PmaObject.Pm.

Například '#pragma variable oTemperature1 = PmaObjectRef("/Block1/Data/#vars/Temperature1")

Například '#pragma variable oTemperature1 = PmaObjectRef("../Data/#vars/Temperature1")

 
#pragma variable x = PmgObjectRef("cesta"):

Umožňuje získat odkaz na Pmg objekt nebo jeho implementační podobjekt v obrazu. Ve skriptu založí lokální proměnnou a nastaví její počáteční hodnotu na odkaz na požadovaný Pmg objekt nebo jeho implementační podobjekt Tato direktiva skriptu je funkční pouze ve skriptech v obrazech (události Pmg objektů).

Reference na objekt získaný tímto způsobem je výhodný, protože odkaz je známý už ve vývojovém prostředí PROMOTIC, to znamená, že systém PROMOTIC o tomto odkazu ví a je znám typ odkazovaného objektu, což jednou umožní v editoru skriptů inteligentní nápovědu se seznamem metod a vlastností objektu, atd.

Pro získání Pmg objektu na dynamické (dopředu neznámé) cestě slouží metoda PmgObject.Items.

Například '#pragma variable oEdit0 = PmgObjectRef("../edit0")

Například '#pragma variable oTemperature1 = PmgObjectRef("../edit0/#vars/Temperature1")

#pragma option

Slouží k ovlivnění způsobu, jakým systém PROMOTIC skript použije, to znamená, že nastavuje některé parametry systému PROMOTIC. Nedochází k modifikaci obsahu skriptu (s výjímkou odstranění vlastní direktivy #pragma).
 
#pragma option OldGlobalMethodCall:

Umožňuje zapnout starý způsob volání globálních metod, kdy se globální metody volaly ve skriptu přímo jejím názvem (stejně jako funkce jazyka VBScript). Tento způsob však nebyl kompatabilní s Web aplikacemi. Nově je potřeba globální metody aplikace volat pomocí Pm.Methods. Tato direktiva skriptu má smysl pouze pro globální metody aplikace. Pokud není nastaveno (nebo použije-li se hodnota 0), pak se použije nový způsob volání globálních metod.

Syntaxe: '#pragma option OldGlobalMethodCall = 0/1

kde 0 (přednastaveno) je nový způsob a 1 je starý způsob.

Například '#pragma option OldGlobalMethodCall = 1

Příklad volání globální metody Test se dvěma parametry ve skriptu starým způsobem přímo:

  v = Test(5, 8)

Příklad volání globální metody Test se dvěma parametry ve skriptu novým způsobem nepřímo:

  v = Pm.Methods.Test(5, 8)


Historie:
Pm8.03.07: Opravená chyba: ve skriptu nefungovala direktiva skriptu #pragma option OldGlobalMethodCall.
Pm8.00.00: Při tvorbě skriptů lze nyní používat tzv. #pragma direktiva skriptu. Slouží pro jednodušší vytvoření pomocné proměnné nebo pro speciální příznaky pro interpretaci skriptu.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice