Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Popis direktivy #pragma ve skriptech systému PROMOTIC

Direktiva #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ě webové 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 #pragma je vždy zapsána v poznámce skriptu, tzn. v VBScript za znakem "apostrof" ('), v JavaScript za dvěmi 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 vloží do skriptu kód se založením lokální proměnné skriptu s příslušným jménem (příkazem Dim) 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 webovým 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 = PmObjectRef("cesta"):

Umožňuje získat odkaz na Promotic objekt ze stromu 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ý v tom, ž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 PmObject.Pm.

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

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

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

Umožňuje získat odkaz na grafický prvek 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ý grafický prvek nebo jeho implementační podobjekt (pro takovou proměnnou se tedy nepoužívá příkaz Dim a Set). Tato direktiva je funkční pouze ve skriptech v obrazech (události grafických prvků).

Odkaz na objekt získaný tímto způsobem je výhodný v tom, ž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í prvku na dynamické (dopředu neznámé) cestě slouží metoda PmiItem.Items.

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

Například '#pragma variable oTemperature1 = PmiItemRef("../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 vyjí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 jménem (podobně jako funkce jazyka VBScript). Tento způsob však nebyl kompatabilní s webovými aplikacemi. Nově je potřeba globální metody aplikace volat pomocí Pm.Methods. Tato direktiva má smysl pouze v globálních metodách aplikace. Neuvede-li se (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)

© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice