Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Direktiva skriptu #pragma systému PROMOTIC

Direktiva skriptu #pragma umožňuje 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, tzn. ž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 odkaz na object).

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 druh 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. Používá se 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 odkaz 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 (pro takovou proměnnou se tedy nepoužívá příkaz Dim a Set).

Odkaz 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, tzn. že 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 obraze. 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ů).

Odkaz 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, tzn. že 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, tzn. ž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 ze 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 v globálních metodách 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 ze skriptu starým způsobem přímo:

  v = Test(5, 8)

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

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


Historie:
Pm8.00.00: Vytvořeno
Pm8.03.07: Opravená chyba: ve skriptu nefungovala direktiva skriptu #pragma option OldGlobalMethodCall.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice