Obsah

HandyScript

Tato nápověda obsahuje následující kapitoly.

Úvod

Skript

Řádky skriptu

Jednořádkové komentáře

Víceřádkové komentáře

Výrazy

Literály

Řetězcové literály

Symboly

Proměnné

Booleovy hodnoty

Identifikátory

Konstanty

Návěští

Operace

Operátory

Přiřazování

Funkce eval()

Pole

Objekty

  local

  ftp

  log

  misc

  timer

  registry

  files

Implicitní metody

Řídicí struktury

  if…endif

  while…endwhile

  repeat…until

  for…endfor

  break

Funkce

  return

Globální a lokální proměnné

Asynchronní komunikace


Úvod

HandyScript je skriptovací jazyk, určený pro obecné využití, zejména jako „automatizátor“ úkonů, které by uživatel musel jinak dělat ručně. Je objektově založený, několik základních objektů dovoluje práci s lokálními i vzdálenými soubory, registry i dalšími zdroji. Definované proměnné mohou obsahovat čísla, řetězce, datum, nebo tvořit asociativní pole těchto hodnot. Umožňuje definici uživatelských funkcí, čtení/zápis do souborů, reagovat na asynchronní události a mnohem více.


Skript

Skript tvoří příkazy, které mohou být vnořeny do řídicích struktur (konstruktů). Je možné si definovat proměnné a ve skriptu s nimi pracovat. Příkazy mohou mít své parametry, které jsou specifikovány ve formě výrazů. Skript taktéž dovoluje definici uživatelských funkcí.

Řádky skriptu


Řádky skriptu

Řádky skriptu mohou být i prázdné nebo obsahovat direktivy, příkazy, řídicí struktury nebo komentář. Každá základní skladební jednotka HandyScriptu musí být na samostatné řádce. Na více řádkách mohou být výrazy zapsány jen tehdy, pokud je dodrženo, že na každém řádku (kromě toho, na kterém víceřádkový zápis končí) je na konci znak zpětného lomítka (\), který zápis prodlužuje.

Příklad příkazu na jeden a na dva řádky:

a="Příkaz na jeden řádek"
b="Příkaz na" + \
  " dva řádky";

Skript


Komentáře

V HandyScriptu, jako v jakémkoli normálním skriptovacím jazyku je možné do kódu vkládat komentáře. Komentáře v HandyScriptu mohou být buď jednořádkové nebo víceřádkové.


Jednořádkové komentáře

Jednořádkové komentáře ve skriptu jsou uvozeny znakem mřížky (#). Za ním může následovat libovolný text. Komentář platí až do konce řádky – vše, co je za tímto znakem, interpreter ignoruje.

Okomentované řádky skriptu, přiřazujího a vypisujícího hodnotu proměnné:

a=1         # proměnné `a` přiřadím 1
log 'a=':a  # a nechám si ji vypsat

V nové verzi byla přidána podpora á la C, uvozená dvěma lomítky (//).

Poznámka: Každý nový řádek poznámky musíte opět uvést znakem mřížky, pokud ovšem nechcete použít víceřádkové komentáře.


Víceřádkové komentáře

Víceřádkové komentáře se, podobně jako jazyku C, ohraničují znakem hvězdičky a lomítka (/*), (*/). Vše, co je mezi nimi, je chápáno jako komentář a ignorováno interpreterem. Víceřádkové komentáře je možno vložit kamkoli ve skriptu (třeba i doprostřed výrazu), jedinou výjimkou jsou řídicí struktury, jejichž každá část musí být uvedena právě na jedné řádce.

Tento typ komentáře se může vyskytovat mezi jednotlivými termy výrazu bez narušení správnosti celkového výsledku.

Příklad víceřádkového komentáře vloženého doprostřed výrazu

a=1 + 2 * 3 - 4 /* toto
  je komentář na více
  řádků */ + 5 - 6 * 7

Poznámka: Víceřádkový komentář nefunguje jako řídicí struktura, nebude tedy fungovat vkládat do sebe více komentářů navzájem.


Term
Term je základní stavební kámen výrazů i programového kódu. Termem může být číslo, identifikátor proměnné, klíčové slovo nebo například závorka apod.


Vkládání externích souborů
Vkládání obsahu externích souborů

Vkládání obsahu externích souborů je možné pomocí direktivy include, za níž následuje jméno vkládaného souboru. Tato direktiva do načítaného skriptu zahrne obsah daného souboru. Povolené je i vícenásobné a víceúrovňové vkládání. Je tedy možné udržovat více zdrojových souborů a výsledný skript z nich jednoduše sestavit.

Poznámka: Při chybě u takto sestavených skriptů se vypíše řádka z celkového skriptu a současně s ní i řádka uvnitř vkládaného souboru.


Výrazy

Výrazy se skriptu skládají z jednoho nebo více termů, spojených operátory. Termy jsou buď literály (explicitně uvedené hodnoty) nebo symboly, reprezentované svým identifikátorem. V posledním rozšíření jazyka mohou být termy i výsledky uživatelem definovaných funkcí.


Literály

Literály jsou hodnoty vyjádřené explicitně (tedy nikoli pomocí symbolu). Mohou být buď číselné nebo řetězcové. Číselný literál je posloupnost jedné či více číslic, za kterými může následovat znak tečky, oddělující desetinnou část, a za ní další posloupnost číslic, definující rozvoj desetinné části čísla.


Řetězcové literály
Řetězové literály

Řetězcové literály jsou ohraničeny v uvozovkách (") nebo apostrofech (‘), musí však končit tím znakem, kterým byly uvozeny (uvozovky v řetězci ohraničeném apostrofy a apostrofy v řetězci ohraničeném uvozovkami se berou jako znaky, které do tohoto řetězce patří). Navíc, v řetězci, jenž je ohraničen uvozovkami, se mohou vyskytnout i speciální znaky, jež jsou uvozeny zpětným lomítkem (\). Samotné zpětné lomítko též patří mezi tyto speciální znaky.

Přehled speciálních znaků je uveden v následující tabulce:

Sekvence	Znak (v závorce je uveden ASCII kód)
\b	bell (7)
\n	nový řádek (13)
\r	návrat vozíku (10)
\t	tabulátor (9)
\"	uvozovka neukončující řetězec (34)
\\	zpětné lomítko (92)
\ooo	znak s kódem reprezentovaným třemi osmičkovými číslicemi
\xHH	znak s kódem reprezentovaným dvěmi šestnáctkovými číslicemi
\dnnn	znak s kódem reprezentovaným třemi desítkovými číslicemi je-li číslo kódu<100, musí být doplněno zleva nulami
\n	n, kde n je jakýkoli jiný znak než znaky uvedené v této tabulce


Symboly

Symbolem zde rozumíme buď proměnné nebo konstanty, a v posledním rozšíření jazyka též návěští a identifikátory funkcí.


Proměnné

Proměnná je pojmenované místo v paměti, které v ní zabírá určité místo, nese určitou diskrétní hodnotu a je jednoznačně určena svým identifikátorem, který její hodnotu reprezentuje. Hodnotou proměnné zde může být číslo, řetězec, znak, datum apod. V tomto skriptovacím jazyku hodnotou proměnné nemůže být objekt, zdroj (resource) nebo soubor. Ukazatele podporovány nejsou (stejně jako ve většině skriptových interpreterů).


Booleovy hodnoty

Booleovy jako true a false nejsou implementovány v tom smyslu, že by je skript vracel jako výsledky metod nebo výrazů. Nicméně, před spuštěním skriptu jsou v tabulce symbolů nadefinovány konstanty true (s hodnotou 1) a false (s hodnotou 0). Všechny relace, které operují s logickými hodnotami, vracejí místo logické jedničky resp. logické nuly hodnoty 1 resp. 0 (potažmo true resp. false) – lze je tedy s těmito konstantami porovnávat…

b=a>5 if b=true  # příkazy endif	Též lze od druhého řádku psát: if b  # příkazy endif


Identifikátory

Identifikátor proměnné, konstanty či funkce začíná písmenem nebo podtržítkem, za nímž mohou být znaky číslic, písmen nebo opět podtržítek. Při vyhodnocování výrazu se místo identifikátoru dosadí hodnota proměnné, kterou reprezentuje.


Deklarace proměnné

Deklarace proměnné sestává buď z identifikátoru proměnné, následované znakem rovnítka (=) a počáteční hodnotou, nebo z klíčového slova var, za nímž následuje identifikátor proměnné. Proměnná může být deklarována i přiřazením její počáteční hodnoty. U deklarace s var je dovolen zápis více proměnných (a jejich počátečních hodnot), vzájemně oddělených čárkou, jak je uvedeno v následujícím příkladu.

var i,j,delka=101
nadpis="Nazdar"

Většinou se var používá pro definici proměnných, jimž se nějaká hodnota přiřadí až později.


Konstanty

Na začátku jsou již předdefinovány konstanty true=1 a false=0. Další konstanty lze deklarovat pomocí klíčového slova const. Od deklarace nelze hodnotu konstanty změnit.

Obecně, používat konstanty místo explicitních literálů je velmi výhodné, protože takto psané skripty se pružněji přizpůsobují pozdějším úpravám, vycházejících z nových nebo lehce pozměněných požadavkům.

const MAX=100
MAX=101       # nastane chyba

Definuje konstantu MAX. Od okamžiku definice lze tuto konstantu pouze číst, nikoli ji měnit.


Návěští

Návěští je symbol, který označuje začátek té části skriptu, která následuje za ním. Návěští se definuje samostatným identifikátorem, který začíná na začátku řádky a za ním následuje znak dvojtečky (:). Za návěštím se mohou vyskytovat další příkazy nebo komentář.

goto finish
...
finish:   # komentar

Definuje návěští finish. Na toto návěští je možné přesměrovat běh skriptu pomocí příkazu goto.

Poznámka: V současné verzi tohoto jazyka je možné odskakovat pouze na návěští, která nejsou zapouzdřena v žádné řídicí struktuře. Autor skriptu to nevidí na závadu, vzhledem k tomu, že používání příkazu goto je proti filosofii vyšších programovacích jazyků.


Operace

Operace je relace typicky nad jedním nebo dvěma, výjimečně i více operandy, spojenými v patřičné notaci operátorem. Operandem pro operaci může být term nebo výraz vyšší úrovně než té, na níž operátor operuje. Použít můžeme i výraz s operátory nižší priority, pokud jej uzavřeme do kulatých závorek.


Operátory
Tabulka operátorů

Následující tabulka ukazuje všechny operátory a jejich prioritu od té nejvyšší k té nejnižší.

Pri.	Asoc	Operátor	Operace
5	L	()	závorka měnící prioritu
4	L	.	přístup k vlastnosti nebo metodě objektu
4	L	[]	přístup k prvku pole
4	L	{}	přístup ke znaku řetězce
3	R	-	unární minus
3	R	!	unární logický doplněk
3	R	~	unární bitový doplněk
3	R	**	umocňování
2	L	<<	posun doleva, doplnění znaménkem
2	L	>>	posun doprava, doplnění znaménkem
2	L	>>>	posun doprava, doplnění nulou
2	L	<:	bitová rotace doleva
2	L	:>	bitová rotace doprava
2	L	& nebo &&	bitový součin (AND)
2	L	*	aritmetický součin
2	L	/	podíl
2	L	/|	celočíselný podíl
1	L	%	modulo – zbytek po dělení
1	L	+	součet
1	L	-	rozdíl
1	L	^	bitová nonekvivalence (XOR)
1	L	| nebo ||	bitový součet (OR)
1	R	:	spojení (concatenation)
0	L	?? ?	podmínkový (ternární) operátor. Protože dvojtečka už funguje jako operátor spojení, jsou v zápisu ternálního operátoru použity dva a jeden otazník.
0	L	= nebo ==	rovnost
0	L	!= nebo <>	nerovnost
0	L	<	menší než
0	L	<=	menší nebo rovno
0	L	>	větší než
0	L	<=	větší nebo rovno
0	L	=>	asociace indexu a hodnoty pole (pouze při definici prvků pole)
Poznámka: Priorita operátorů je směsicí obdobných priorit v jiných jazycích, opdovídá spíše operátorům v jazyce Pascal než v jazyce C/C++ nebo Java.

Poznámka: Logický součin, logický součet a nonekvivalence se nepočítají s hodnotami true a false, ale v rámci celých čísel.


Přiřazování

Přiřazovací příkaz nebo též přiřazování bývá nejčastějším úkonem každého programovacího i skriptovacího jazyku. Přiřazovací příkaz se skládá z tzv. levé hodnoty, dále přiřazovacího operátoru a tzv. pravé hodnoty, přičemž se pravá hodnota přiřadí (vpodstatě zkopíruje) do levé hodnoty. Levou hodnotou může být pouze to, co zabírá místo v paměti, tedy proměnná (to nejčastěji), případně absolutně nebo přes ukazatel adresované paměťové místo. Pravou hodnotou může být jakákoli hodnota, kterou má smysl levé straně přiřadit. Přiřazovací operátor bývá nejčastěji obyčejné přiřazení, může se ale jednat i přiřazení relativní, kdy pravá hodnota je výsledkem binární operace, jejíž prvním operandem je stávající levá hodnota.

HandyScript podporuje relativní přiřazení (stejně jako jazyky C/C++), na rozdíl od něj však není možné přiřazení brát současně jako hodnotu – v HandyScriptu se v jednom příkazu dá hodnota buď přiřazovat nebo číst. Ze stejného důvodu se v něm neřeší, zda-li přiřazovací operátor stojí před nebo za levou hodnotou – stojí vždy za ním.

Například:

a=3

přiřazuje proměnné a hodnotu 3 (tj. po provedení tohoto příkazu bude hodnota proměnné a mít hodnotu 3).

Ostatní přiřazovací příkazy HandyScriptu bude ilustrovat následující tabulka:

Přiřazení	Vysvětlující zápis
a+=3	a=a+3
a-=3	a=a-3
a*=3	a=*3
a/=3	a=a/3
a/|=3	a=a/|3
a%=3	a=a%3
a**=3	a=a**3
a<<=3	a=a<<3
a>>=3	a=a>>3
a>>>=3	a=a>>>3
a<:=3	a=a<:3
a:>=3	a=a:>3
a&=3, a&&=3	a=a&3
a|=3, a||=3	a=a|3
a^=3	a=a^3
a:=3	a=a:3 Pozor, zde se nejedná o přiřazení á la Pascal
Krom toho HandyScript implementuje přiřazovací příkazy pouze s levou stranou, jejíž smyslem je na levé straně provést elementární aritmetickou nebo logickou operaci a výsledek opět přiřadit levé straně. Může se to zdát zbytečné, ale představíme-li si místo a nějakou složitě a dlouze zapsanou levou hodnotu, uvědomíme si, že může být výhodné použít zápis, kde se tato vyskytuje pouze jednou.

Přiřazení	Vysvětlující zápis
a++	a=a+1
a--	a=a-1
a!=	a=!a
a~=	a=~a
a+/-	a=-a
Viz. též: Operátory


Dynamické vyhodnocování a funkce eval()
Dynamické vyhodnocování a spouštění kódu a funkce eval()

Mezi funkcemi má privilegované místo funkce eval(). Jejím jediným parametrem je část kódu, který se buď vykonává nebo vyhodnocuje. Pokud je tato funkce součástí výrazu, pak se při stanovování jeho hodnoty nejdříve vyhodnotí parametr funkce jako by byl nový řádek skriptu, vložený do kódu. Tato hodnota pak substituuje jako notaci funkce, a výraz se dohodnotí.

Pokud je funkce eval() volána zvlášť (jako procedura), skriptový interpreter opět nejdříve přečte její parametr a ten vykoná jako by byl součástí skriptu.

Příklad použití funkce eval()

a1=“Alfa“ a2=”Beta” a3=”Gamma” for(i=1;i<=3;i++)  log eval(“a”:i):”.” endfor	V tomto příkladu použijeme funkci eval() jako substituent části výrazu. Je to jako volání… log a1:”.” log a2:”.” log a3:”.”
a1=“Alfa“ a2=”Beta” a3=”Gamma” for(i=1;i<=3;i++)  eval(“log a”:i):”.” endfor	Ten samý příklad vyřešíme to samou funkcí, ale použijeme ji jako (dynamicky vykonávaný) příkaz – do parametru eval() je tentokrát “přibalen” i konvenční příkaz, v tomto případě log.
Poznámka: Pokud dojde k chybě uvnitř výrazu funkce eval(), je chybová informace o pozici výskytu chyby následující: řádek odpovídá, ale sloupec je vztažen k začátku řetězce jakožto parametru funkce.

Poznámka: Pomocí funkce eval() není možné interpretovat řídicí struktury.


Pole

V poslední verzi skriptovacího jazyka, je možné do proměnných ukládat asociativní pole různých typů. Deklarace se provádí pomocí klíčového slova array(), mezi jehož závorek se přímo vloží počáteční hodnoty vznikajícího pole.

Příklad deklarace pole pomocí rezervovaného slova array:

pole = array(127, “Alfa“, ”klic”=>”hodnota”, ”max”=>5,5=>”pet”)

Po deklaraci bude:

pole[0]=127

pole[1]=”Alfa”

pole[“klic”]=”hodnota”

pole[“max”]=5

pole[5]=”pet”

Pole v Handyscriptu jsou tzv. asociativní, tzn., že klíč (index) každého prvku může být číslo, ale i řetězec, datum či jiný typ. Pomocí znaků kvazi-operátoru (=>) může být s polu s hodnotou deklarován i klíč, resp. dvojice klíč, hodnota. Není-li použit, pak je prvku vybrán klíč implicitní, který odpovídá pořadí, v kterém byl prvek vytvořen (toto pořadí začíná od nuly a index každého dalšího prvku je vždy o jedničku větší).


Objekty

Tento skriptovací jazyk je "objektově založený" – není možné v něm nové objekty (třídy) vytvářet, avšak může využívat objektové struktury, která je pro něj daná a byla pro něj vytvořena. Podobně jako třeba v ASP, i zde je několik základních objektů, s nimiž lze pracovat.

Toto je jejich přehled:

local	pro práci s lokálními soubory a adresáři
ftp	pro práci s vzdálenými soubory a adresáři
log	pro výstup na obrazovku
timer	pro měření času
registry	pro práci se systémovými registry
files	pro otvírání, čtení a zápis z/do lokálních souborů
misc	pro všechno ostatní


Local
Local	Vlastnosti	Metody

Local je objekt, který reprezentuje lokální adresář a soubory v něm.

Implementuje:

aktuální lokální svazek a jeho vlastnosti

aktuální lokální adresář

soubory v aktuálním lokálním adresáři, informace o nich a metody pro práci s nimi


Local	(vlastnosti)	Metody

Následující tabulka uvádí seznam vlastností objektu local:

Vlastnost	Význam
driveletter	písmeno aktuální diskové jednotky (např. ’C’)
diskfree	počet volných bajtů na disku
disksize	kapacita jednotky v bajtech
drivetype	typ aktuálního disku (jako text)
drivetypecode	kód typu aktuálního disku (jako číslo - výstupní hodnoty jsou dle winAPI)
filesystem	typ souborového systému specifikovaného písmenem disku
volumesn	sériové číslo svazku
dirsize	velikost aktuálního adresáře
direxists	vrátí 1, existuje-li zadaný adresář
path	cesta k aktuálnímu adresáři (včetně jej)
count	počet položek (souborů a složek v aktuálním adresáři)
path_desktop	vrátí cestu k ploše
path_internet	vrátí cestu k nastavení internetu
path_programs	vrátí cestu k "Program Files"
path_controls	vrátí cestu k Ovládacím panelům
path_printers	vrátí cestu k tiskárnám
path_personal	vrátí cestu k osobnímu adresáři uživatele
path_favorites	vrátí cestu k Oblíbeným položkám
path_startup	vrátí cestu k nabídce "Po spuštění"
path_recent	vrátí cestu k naposledy otevřeným souborům
path_sendto	vrátí cestu k nabídce "Odeslat"
path_bitbucket	vrátí cestu k adresáři reprezentující Koš
path_startmenu	vrátí cestu k nabídce Start
path_desktopdirectory	vrátí cestu k adresáři reprezentující plochu
path_drives	vrátí cestu k adresáři se zástupci jednotlivé logických svazků
path_network	vrátí cestu k adresáři se zástupci síťových jednotek
path_nethood	vrátí cestu k adersáři "Okolní síť"
path_fonts	vrátí cestu k fontům Windows
path_templates	vrátí cestu k šablonám
path_common_startmenu	vrátí cestu k nabídce Start (společné pro všechny uživatele)
path_common_programs	vrátí cestu k "Program Files" (společné pro všechny uživatele)
path_common_startup	vrátí cestu k nabídce "Po spuštění" (společné pro všechny uživatele)
path_common_desktopdirectory	vrátí cestu k ploše (společné pro všechny uživatele)
path_appdata	vrátí cestu k adresáři dat pro aplikace
path_printhood	vrátí cestu k síťovým tiskárnám
path_altstartup	vrátí cestu k alternativní nabídce "Po spuštění"
path_common_altstartup	vrátí cestu k alternativní nabídce "Po spuštění" (společné pro všechny uživatele)
path_common_favorites	vrátí cestu k Oblíbeným položkám (společné pro všechny uživatele)
path_internet_cache	vrátí cestu k internetové vyrovnávací paměti
path_cookies	vrátí cestu k adresáři se soubory cookies
path_history	vrátí cestu k adresáři "History"
Je-li za klíčovým slovem local v hranatých závorkách specifikováno jméno konkrétního existujícího souboru nebo adresáře, je tento zápis interpretován jako objekt, reprezentující tento soubor nebo adresář, a poskytující následující vlastnosti:

Vlastnost	Význam
name	jméno souboru (bez cesty)
fullname	jméno souboru (i s cestou)
nameonly	jméno souboru (bez přípony a bez cesty)
ext	přípona souboru
path	cesta k tomuto souboru (adresáři)
size	velikost souboru v bajtech
creationtime	čas vytvoření souboru
lastaccesstime	čas posledního přístupu k souboru
lastmodified	čas poslední změny (modifikace) souboru
datetime	datum a čas souboru (jedna hodnota za všechny)
attr	atributy souboru (součet jednotlivých bitů)
attrreadonly	je pouze pro čtení?
attrhidden	je skrytý?
attrsystem	je systémový?
attrdirectory	jedná se o složku?
isdir	test na adresář (dle funkce DOSu)
attrvolumeid	jedná se o číslo svazku?
attrnormal	je nekomprimovaný?
attrcompressed	je komprimovaný?
attrarchive	je připraven pro archivaci?
drive, volume	písmeno diskové jednotky k tomuto souboru (adresáři)
exists	vrací 1, existuje-li soubor, zadaný v hranatých závorkách objektu local
short	jméno, zkrácené na 8.3 znaky
owner	vlastník daného souboru
findexe	asociovaná aplikace k souboru
index	číselný index tohoto souboru v poli Local


Local (metody)	Vlastnosti

Následující tabulka uvádí seznam metod objektu local:

Metoda	Popis
list	znovu načte do cache soubory v aktuálním adresáři Implicitně se tato metoda volá při inicializaci interpreteru a pak při každé změně aktuálního adresáře.
md	vytvoří zadaný adresář
makepath	vytvoří všechny adresáře v zadané cestě
exe	spustí soubor
open	otevře soubor asociovaným programem (pokud existuje)
Je-li za klíčovým slovem local v hranatých závorkách specifikováno jméno konkrétního existujícího souboru nebo adresáře, je tento zápis interpretován jako objekt, reprezentující tento soubor nebo adresář, a poskytující následující vlastnosti:

Metoda	Popis
copy	zkopíruje tento soubor do zadaného adresáře
delete	smaže tento soubor
Příklad: local[“test.txt”].size   vrátí velikost souboru “test.txt”


Ftp

Ftp je analogií k objektu local, ale pro adresář na serveru, připojeném přes FTP.

Implementuje:

aktuální vzdálený adresář

soubory ve vzdáleném adresáři, informace o nich a metody pro práci s nimi


Ftp	(vlastnosti)	Metody

Následující tabulka uvádí seznam vlastností objektu ftp:

Vlastnost	Význam
count	počet souborů ve vzdáleném adresáři
currentdir, path	cesta na vzdáleném serveru
host	adresa vzdáleného hostitelského počítače
port	port přenosu
password	heslo pro připojení
showpassword	ukazovat FTP heslo?
connected	je spojení navázáno?
closed	je spojení uzavřeno?
closedgracefully	bylo spojení zavřeno s prázdným bufferem pro čtení?
busy	je přenos zaneprázdněn?
ready	je přenos připraven?
reading	probíhá právě čtení?
writing	probíhá právě zápis?
username	uživatelské jméno pro autentikaci spojení
boundIP	IP adresa klienta, která se použije při spojení
status	status FTP jako řetězec (anglicky)
statuscode	kód statusu FTP (0 – překlad adresy, 1 – probíhá připojování, 2 – připojeno, 3 – probíhá odpojování, 4 – odpojeno, 5 – spojení generuje informační zprávu)
systemdesc	popis hostitelského systému
RevcBufferSize	velikost buferu pro přijímání dat
SendBufferSize	velikost buferu pro odesílání dat
passive	jedná se o pasivní režim přenosu?
binary	je přenos binární (8 bitů)?
ascii	je přenos textový (7 bitů)?
transfertype	typ přenosu (‘A’ – ASCII, ‘B’ – binární)
asciifilter	jsou přijímané znaky konvertovány do ASCII (7 bitů)?
inputln	vrací řádku z odpovědi FTP
readln	přečte řádku z interního buferu FTP komponenty. Možné parametry jsou: znak nebo sekvence znaků, označující konec řádky, a TIMEOUT (v sekundách)
readlnwait	přečte a vrací řádku z buferu spojení, dokud nenarazí na prázdnou řádku
readlntimedout	vrací 1, nastal-li TIMEOUT za metody readln, jinak 0
readstring	přečte z interního buferu FTP komponenty řetězec
pop	destruktivně přečte a vrátí určený počet bajtů z bufferu
recv	poslední přijatý text z FTP serveru
sent	poslední zaslaný text z FTP serveru
lastdirection	vrací ‘recv’ nebo ‘sent’ podle toho, který směr komunikace mezi klientem a serverem byl poslední
connectGetAll	připojí se a vrací veškeré informace vyměněné mezi klientem a serverem od připojení
socksAuth	je potřeba autentizovat se na místní síti?
socksUser	uživatelské jméno pro autentizaci na místní síti
socksPassword	heslo pro autentizaci na místní síti
socksHost	IP adresa proxy serveru
socksPort	port pro komunikaci v místní síti
socksVersion	vrací verzi Socks protocolu (‘4.0’, ‘4.0A’, ‘5.0’ nebo číslo)
nagle	je používán algoritmus Nagle?
bytesread	počet doposud přečtených bajtů
byteswritten	počet doposud zapsaných bajtů
Je-li za ftp v hranatých závorkách specifikováno jméno konkrétního souboru, je tento zápis interpretován jako tento vzdálený soubor, a poskytuje navíc následující vlastnosti:

Vlastnost	Význam
name	jméno souboru (bez cesty)
fullname	jméno souboru (i s cestou)
nameonly	jméno souboru (bez přípony a bez cesty)
ext	přípona souboru
size	velikost souboru v bajtech
datetime	datum a čas souboru
modified	datum a čas poslední změny souboru
attr	atributy souboru (podle systému jako číslo nebo řetězec)
dir	jedná se o adresář?
attrfile	jedná se o soubor?
attrdisk	jedná se o disk?
path	vzdálená cesta (implicitní)
Poznámka: Informace shomážděné o vzdálených souborech nejsou tak vyčerpávající jako o souborech lokálních (např. místo datumů vytvoření, posledního zápisu a poslední změny obsahují jen jedno datum). Taktéž trvá určitou dobu, než budou tato data k dispozici (FTP klient se musí připojit, autentizovat, poslat příkaz pro seznam souborů ve vzdáleném adresáři a obdržet data).


Ftp	(metody)	Vlastnosti

Následující tabulka uvádí seznam metod objektu ftp:

Metoda	Popis
connect	připojit (musí být nastaven host, port, user a password)
disconnect	odpojit
get	downloaduje soubor ze serveru
put	uploaduje soubor na server
abort	zastaví operaci FTP
quit	uzavře FTP spojení mezi serverem a klientem
cd, cwd	změna pracovního adresáře
cdup	přesun na adresář o jednu úroveň vyšší
cmd	pošle příkaz FTP
site	vykoná příkaz na straně serveru
ascii	nastaví ASCII režim
binary	nastaví binární režim
passive	nastaví buď režim PASV nebo PORT
list	znovu načte do cache soubory ve vzdáleném adresáři Implicitně se tato metoda volá po spojení s FTP serverem a pak při každé změně aktuálního vzdáleného adresáře.
nagle	nastavení použití algoritmu Nagle
openwritebuffer	otevře interní zapisovací buffer
cancelwritebuffer	zakáže zápis do interního zapisovacího bufferu
clearwritebuffer	vyčistí interní zapisovací buffer
closewritebuffer	zavře interní zapisovací buffer
killdatachannel	odpojí datový kanál
command	zašle příkaz peer-počítači
site	vykoná FTP příkaz na straně serveru
write	zašle text peer-počítači
writeln	zašle řádku textu peer-počítači


Log

Log je především jeden z nejfrekventovanějších příkazů skriptu, který vypíše zadaný výraz na výstupní listbox; může však sloužit i jako objekt, dávající informace o výstupním výpisu nebo jeho jednotlivé řádky.

Objekt log má následující vlasnosti:

Vlastnost	Význam
count	počet doposud vypsaných řádků do výstupního logu
fix	nastaví neproporcionální font
vary	nastaví proporcionální font
clear, cls	vyprázdní výstupní log
hr	vypíše horizontální čáru
follow	sleduje výpis, ukazuje poslední řádku
dont_follow	přestane sledovat výpis
scroll	posune výstupní log vertikálně na zadanou hodnotu
hscroll	zapíná nebo vypíná horizontální posunovátko
Výraz log[n] vrací n. řádek výstupního logu.


Misc

Misc je objekt, který v sobě soustřeďuje proměnné užívané pro nastavení právě běžícího skriptu a ostatní vlastnosti, které nespadají pod ostatní objekty.

Objekt misc má následující vlasnosti:

Vlastnost	Význam
row, line	právě zpracovávaná řádka
column, col	sloupec na zpracovávané řádce, kam dospěl interpret
autoclose	zavřít HandyScript po dokončení?
escquits	stisk klávesy Escape zavírá HandyScript?
follow	výpis na výstup je posunován tak, že vždy vidíme poslední řádku
pi	konstanta Pí
scriptlife	počet sekund, po jejichž uplynutí se Handy sám zavře (pokud není nastaveno autoclose); 0=nezavře se
scriptstart	čas, kdy se začal spouštět aktuální skript (ve formátu TDateTime)
scriptend	čas, po jehož dosažení se Handy automaticky zavře (ve formátu TDateTime)
timeout	počet sekund, po nichž se FTP připojení ukončí
concatchar	znak pro spojování termů
memberchar	znak pro přístup k vlastnostem a metodám objektu
commachar	znak pro oddělování výrazů
comentchar	znak pro uvození komentářů
mouse	vrátí 1, je-li přítomna myš, jinak 0
mouse_wheel	vrátí 1, je-li na myši přítomno kolečko, jinak 0
mouse_wheelscroll	kolik řádek se obecně posouvá při události kolečka myši
mouse_x	x-ová souřadnice myši (vztaženo k obrazovce)
mouse_y	y-ová souřadnice myši (vztaženo k obrazovce)
mouse_buttons	vrací počet tlačítek myši (0 pokud myš není připojena)
mouse_cursor	kód kurzoru myši (číslo)
joy_buttons	počet tlačítek na joystiku (nebo 0, není-li připojen)
screen_width	šířka aktuálního obrazového módu
screen_height	výška aktuálního obrazového módu
screen_ppi	počet bitů na pixel aktuálního obrazového módu
screen_monitors	počet monitorů, připojených ke grafické kartě (většinou 1, výjimečně 2)
fonts	počet registrovaných písem v systému
fonts[n]	název řezu n. registrovaného písma
systemfontsize	vrací velikost systémového fontu (v dpi)
ports	počet akivních WinSock portů/služeb
ports[n]	číslo n. aktivního WinSock portu služby
languages	počet systémem podporovaných jazyků
languages[n]	název n. jazyku ze seznamu podporovaných jazyků
languages[n].localeid	identifikační číslo n. jazyku
languages[n].namefromlocaleid	název n. jazyku podle identifikačního čísla
languages[n].ext	koncovka n. jazyku
languages[n].index	pořadí n. jazyku v kolekci jazyků
locale	kód jazykového Locale
printer	název implicitní tiskárny
printer.count	počet tiskáren, na kterých je z tohoto počítače možno tisknout
printer[n]	název n. tiskárny ze seznamu podporovaných tiskáren
printer.index	kolikátá v seznamu tiskáren je výchozí tiskárna (počítáno od nuly)
printer.copies	zvolený počet kopií pro výchozí tiskárnu
printer.printing	vrací 1, pokud výchozí tiskárna právě tiskne, jinak 0
printer.pagenumber	kolikátou stránky výchozí tiskárna právě tiskne
printer.orientation	orientace papíru výchozí tiskárny (0-na výšku, 1-na šířku)
printer.pagewidth	šířka stránky pro výchozí tiskárnu (v bodech)
printer.pageheight	výška stránky pro výchozí tiskárnu (v bodech)
processId	ID aktuálního procesu
app_handle	Handle aplikace (32bitové číslo)
app_active	je aplikace aktivní?
app_name	jméno aplikace
app_left	x-ová pozice levého horního rohu okna aplikace
app_top	y-ová pozice levého horního rohu okna aplikace
app_width	šířka okna aplikace
app_height	výška okna aplikace
app_status	obsah stavového řádku
clipboard	obsah schránky (jen pokud je obsahem text)
localname	jméno počítače
timezonebias	rozdíl časové zóny od UTC (v TDateTime)
utcoffset	rozdíl lokálního času od času greenwichského (v TDateTime)
tempfilename	nahodilé jméno přechodného souboru
rebootms	počet milisekund od rebootu počítače
waveoutdevs	vrací počet zařízení schopných výstupu WAVE
online	vrací 1, pokud jsme on-line, jinak 0
bde	vrací 1, pokud je nainstalováno BDE (Borland Desktop Environment), jinak 0
isactiveobject	vrací 1, pokud je Active-X objekt, předaný jako parametr (například "Word.Application" apod.) nainstalován, jinak 0
mem_free	volná paměť v bajtech
mem_alloccount	celkový počet paměťových bloků, alokovaných aplikací
mem_allocsize	souhrnná velikost bloků alokovaných aplikací
mem_heapallocflags	kód způsobu, kterým je manažeru paměti přidělována paměť od systému (dle WinAPI)
mem_load	vrací procentuální vytížení operační paměti
mem_phys_total	vrací celkovou velikost fyzické paměti
mem_phys_avail	vrací velikost dostupné fyzické paměti
mem_page_total	vrací celkovou velikost stránkovací paměti
mem_page_avail	vrací velikost dostupné stránkovací paměti
mem_virt_total	vrací celkovou velikost virtuální paměti
mem_virt_avail	vrací velikost dostupné virtuální paměti
ioresult	výsledek poslední vstupně/výstupní operace
getlasterror	kód poslední chyby
arg	počet argumentů, s nimiž byl HandyScript spuštěn
arg[n]	n-tý argument, s nímž byl HandyScript spuštěn
env[nazev]	vrací hodnotu proměnnou prostředí nazev (nebo prázdný řetězec, pokud proměnná neexistuje)
mimetype[soubor]	vrací MIME typ zadaného souboru podle jeho obsahu
volume	vrací globální hlasitost (0...100)
leftvolume, rightvolume	vrací globální hlasitost v levém resp. pravém kanálu
filemapping	podobjekt podporující tzv. filemapping („soubory“ mapované do paměti, kterou mohou sdílet běžící procesy)
Vlastnost	Popis
msgid	identifikátor zprávy, která dává na vědomí, že obsah mapovaného souboru byl změněn
msg	registrovaná zpráva jako Handle
handle	handle mapovaného souboru
filename	jméno mapovaného souboru
size	limitní velikost souboru
sync	indikuje, zda-li je komunikace synchronizována
Metoda	Popis
setup	nastaví filemapping; parametry jsou identifikátor zprávy a jméno souboru, za nimi může následovat velikost souboru (implicitně je 32 KB) a zda-li chceme, aby komunikace byla synchronizovaná
close	zavře filemappingové spojení
flush	zapíše poslední obsah do souboru (mimo synchronizaci)
fetch	načte obsah souboru do bufferu (mimo synchronizaci)
regex	podobjekt podporující regulární výrazy
Vlastnost	Popis
subject	vzor pro testování regulárního výrazu
regex	daný regulární výraz
replacement	přechodný řetězec náhrady za zpětné reference uvnitř tohoto výrazu
match	vrací 1, pokud subjekt odpovídá regulárnímu výrazu, jinak 0
matchedExpression	vrací tu část subjektu, která odpovídá regulárnímu výrazu, nebo prázdný řetězec, neodpovídá-li mu
offset	vrací od kolikátého znaku začíná v subjektu shoda podle regulárního výrazu
caseSensitive	vrací 1, pokud srovnávání subjektu podle regulárního výrazu rozlišuje velikost písmen
caseless	vrací 1, pokud srovnávání subjektu podle regulárního výrazu nerozlišuje velikost písmen
multiLine	^ a $ se vztahuje též k začátku a konci nové řádky v testovaném řetězci – nikoli pouze k jeho začátku a konci
singleLine	tečka představuje jakýkoli znak včetně znaku nové řádky
extended	dovolí, aby regulární výraz obsahoval speciální tzv. bílé místo, nové řádky a komentáře ve stylu jazyku Perl, které současně filtruje
anchored	úspěšná shoda smí nastat pouze na začátku subjektu nebo těsně za poslední shodou
dollarEndOnly	nastavení vyhodnocování regulárních výrazů – odpovídá přepínači /E
extra	nastavení vyhodnocování regulárních výrazů – odpovídá přepínači /X
ungreedy	opakovací operátory (+, *, ?) implicitně nejsou „greedy“ (tj. nabízejí průběh subjektu dalším vzorům regulárního výrazu)
BOL	netestovat ^ nebo \A na začátku řetězce
EOL	netestovat $ nebo \Z na konci řetězce
empty	neprovádět shodu pro prázdný řetězec
subexpressions	vrací počet podvýrazů regulárního výrazu
script	sestavený zdrojový skript
Metoda	Popis
kill	pokusí se uzavřít běžící proces (parametr této metody je název tohoto procesu)
beep	pípne
playwav	přehraje zadaný soubor ve formátu WAV
volume	nastaví globální hlasitost (0...100)
setlocaltime	nastaví na počítači místní čas
app_minimize	minimalizuje aplikaci
app_maximize	maximalizuje aplikaci
app_restore	obnoví velikost aplikace
opencdrom	otevře dvířka CD-ROM
closecdrom	zavře dvířka CD-ROM
win_controlpanels	zobrazí systémový dialog "Ovládací panely"
win_screen	zobrazí systémový dialog "Zobrazení"
win_keyboard	zobrazí systémový dialog "Klávesnice"
win_multimedia	zobrazí systémový dialog "Multimédia"
win_datetime	zobrazí systémový dialog "Datum a čas"
win_themes	zobrazí systémový dialog "Motivy"
win_system	zobrazí systémový dialog "Systém"
win_powermanagement	zobrazí systémový dialog "Možnosti napájení"
win_net	zobrazí systémový dialog "Síťová připojení"
win_local	zobrazí systémový dialog "Místní a jazyková nastavení"
win_internet	zobrazí systémový dialog "Možnosti Internetu"
win_apps	zobrazí systémový dialog "Přidat nebo odebrat programy"
win_control_rundll	zobrazí jiný systémový dialog, podle vlastního zadání
win_logoff	odhlásí aktuálního uživatele
win_poweroff	vypne počítač
win_reboot	restartuje počítač
app_hide	schová aplikaci z lišty
app_show	zobrazí aplikaci v liště
misc.script, podobjekt objektu misc, poskytuje informace o zdrojovém skriptu.

Podobjekt misc.script má následující vlastnosti:

Vlastnost	Význam
includes	zdrojové soubory vložené pomocí include
doplnit!
Výraz misc.script[n] vrátí n. řádek výsledného skriptu.

Pojmem výsledný skript je myšlen skript po průchodu syntaktickým analyzátorem, který řeší vkládání externích zdrojových souborů, podmíněný překlad apod.


Timer

Timer je objekt, sloužící pro měření času: dává informace o stavu ‘vnitřních stopek’, které je možno pomocí jeho metod ovládat.

Objekt timer má následující vlasnosti:

Vlastnost	Význam
now	vrací aktuální datum a čas (jako TDateTime)
lap	vrací průběžnou hodnotu stopek
reset	vynuluje stopky
start	zapne stopky
restart	restartuje (vynuluje a zapne) stopky
stop	zastaví stopky a vynuluje stopky
pause	zastaví stopky
continue	pokračuje v měření času
set	nastaví čas stopek na zadanou hodnotu
sleep	uspí aplikaci na zadaný počet milisekund
Poznámka: Výraz timer bez explicitně specifikované metody vrátí stav stopek.


Registry

Registry je objekt, určený pro čtení (eventuelně zápis) do systémového registry.

Objekt registry má následující vlasnosti:

Vlastnost	Význam
root	kořenový klíč
currentkey	aktuální klíč
key	reg_key
dir	adresář ukazatele
path	cesta k aktuálnímu klíči
lazywrite	stav lazywrite (zapisovat změny ihned nebo až nakonec)
hassubkeys	má aktuální klíč podklíče?
numkeys	počet podklíčů v aktuálním klíči
numvalues	počet hodnot v aktuálním klíči
longest	délka nejdelšího podklíče
lastaccess	datum a čas poslední změny v klíči
keyexist	vrací, zda-li v klíči existuje zadaný podklíč
valueexist	vrací, zda-li v klíči existuje zadaná hodnota
size	vrací velikost zadaného podklíče


Files

Files je objekt, který zahrnuje soubory, jež byly při práci se skriptem otevřeny, a všechny metody pro práci se soubory (čtení, zápis, přesun ukazatele, atd.).

Objekt files má následující vlasnosti:

Vlastnost	Význam
numopened	počet aktuálně otevřených souborů
bufsize	velikost buferu pro diskové operace (čtení, zápis)
count	počet všech souborů v kolekci
Je-li za objektem files v hranatých závorkách specifikováno jméno souboru, je tento zápis interpretován jako objekt konkrétního souboru, a to s následujícími vlastnostmi:

Vlastnost	Význam
name, filename	jméno souboru
nameonly	jméno souboru bez přípony
ext	přípona souboru
fullname	jméno souboru i s cestou
path	cesta k souboru
attr, attributes	atributy souboru
opened	je soubor právě otevřen?
closed	je soubor zavřen?
read	vrací specifikovaný počet načtených bajtů
readln	vrací načtenou řádku
index	číselný index tohoto souboru v poli files
Metoda	Popis
fill	vyplní soubor od aktuální pozice specifikovaným počtem bajtů
insert	vloží do souboru od aktuální pozice specifikovaný počet bajtů
delete	umaže od aktuální pozice specifikovaný počet bajtů
truncate	zakončí soubor na aktuální pozici


Implicitní metody

Tento rys jazyka trochu připomíná metody aplikované na objekty z JavaScriptu, C#, Pythonu nebo Ruby. Na rozdíl od nich zde může být metoda přiřazena proměnné i literálu. Za objektem, proměnnou nebo literálem následuje znak tečky (.) a za ním název metody. Mnoho z nich má parametry, v tom případě za názvem metody následuje navíc začátek kulaté závorky a seznam parametrů jakožto samostatných výrazů, oddělených čárkou, to vše je pak ukončeno koncovou kulatou závorkou. Některé metody jsou zamýšleny, že budou aplikovány na řetězce, jiné na čísla nebo datumy, některé dokonce na obojí. Sekvence “.název_metody(případné_argumenty)” se může opakovat libovolněkrát (dokud to dává smysl).

metoda	parametr	význam
_b	žádné	převádí objekt z dvojkové soustavy do desítkové
_filedate	žádné	převádí objekt ve formátu FileDate do formátu TDateTime
_h	žádné	převádí objekt z šestnáctkové soustavy do desítkové
_inet	žádné	převádí objekt ve formátu internetového času do formátu TDateTime
_julian	žádné	převádí objekt v Juliánském datu do formátu TDateTime
_julianm	žádné	převádí objekt v modifikovaném Juliánském datu do formátu TDateTime
_o	žádné	převádí objekt z osmičkové soustavy do desítkové
_unixdate	žádné	převádí objekt ve formátu unixovského data do formátu TDateTime
abs	žádné	vrátí absolutní hodnotu číselného objektu
b	žádné	převádí objekt do dvojkové soustavy
begins	1	vrací 1, pokud objekt začíná na argument, 0 v opačném případě
between	2	vrací 1, pokud hodnota objektu spadá do intervalu, určeném parametry, jinak 0
bit	1	vrací hodnotu specifikovaného bitu čísla
bitclear	1	smaže bit na určené pozici (0-31)
bitset	1	nastaví bit na určené pozici (0-31)
bool	žádné	je-li objekt nenulový, vrací 1, jinak 0
bound	2	omezí hodnotu objektu tak, aby spadal do intervalu, definovaném parametry (minimem a maximem)
bytes	žádné	upraví číslo (uvažované jako velikost v bajtech) na vhodnější jednotku
contains	1	vrací 1, pokud objekt obsahuje argument, 0 v opačném případě
cutstring	1	podle specifikovaného argumentu odstřihne řetězec, odstřihnutou část vrací a zároveň o něj původní řetězec zkrátí
date	žádné	pokud je objektem datum, převede jej na datum ve formátu dne, měsíce a letopočtu
datePart	1	umožňuje objekt typu TDateTime zformátovat podle zadaného formátu. Formát je následující:
		Specifikátor	Význam
		/	oddělovač údajů v datumu
		:	oddělovač údajů v času
		a/p	'a' pro hodinu<12, jinak 'p'
		am/pm	'am' pro hodinu&ly;12, jinak 'pm'
		ampm	ekvivalent k 'am/pm' podle dané lokalizace
		c	krátké datum + dlouhý čas
		d	den (1-31)
		dd	den na 2 místa (01-31)
		ddd	zkratka názvu dne v týdnu (Sun-Sat)
		dddd	název dne v týdnu (Sunday-Saturday)
		ddddd	krátké datum
		dddddd	dlouhé datum
		e	rok v dané éře (jen .jp, .tw a korea)
		ee	rok v dané éře na 2 místa
		g	éra jako zkratka (jen .jp a .tw)
		gg	éra (celá)
		h	hodina (0-23)
		hh	hodina na 2 místa (00-23)
		m	měsíc (1-12)
		mm	měsíc na 2 místa (01-12)
		mmm	zkratka názvu měsíce (Jan-Dec)
		mmmm	název měsíce (January-December)
		n	minuta (0-59)
		nn	minuta na 2 místa (00-59)
		s	sekunda (0-59)
		ss	sekunda na 2 místa (00-59)
		t	krátký čas
		tt	dlouhý čas
		'xx'	znaky v jednoduchých či dvojitých uvozovkách neovlivňují formát
		yy	poslední dvojčíslí roku (00-99)
		yyyy	rok na 4 místa
dateTime	žádné	zformátuje objekt na datum a čas
delete	1 nebo 2	smaže část objektu, reprezentovaného jako řetězec (první argument je ofset, druhý délka). Je-li zadán jen jeden argument, smaže z řetězce vše od ofsetu dále.
dt2msec	žádné	převádí objekt ve formátu TDateTime do milisekund
empty	žádné	vrací 1, je-li objekt prázdný, 0 v opačném případě
ends	1	vrací 1, pokud objekt končí na argument, 0 v opačném případě
filedate	žádné	převádí objekt ve formátu TDateTime na formát FileDate
frac	žádné	vrátí desetinnou část čísla
h	žádné	převádí objekt do šestnáctkové soustavy
hkey2str	žádné	převádí základní klíč struktury registry do podoby řetězce
charAt	1	vrací znak na určené pozici
charCodeAt	1	vrací kód znaku na určené pozici
indexOf	1	hledá v objektu podřetězec a vrací pozici prvního výskytu nebo –1 při neúspěchu
inet	žádné	převádí objekt z formátu TDateTime do internetového času
insert	2	vloží do objektu řetězec (první argument je pozice, druhý vkládaný řetězec)
inv	žádné	je-li objekt číslo, vynásobí číslem –1
invcase	žádné	prohodí velikost písmen (bez české diakritiky)
ireplace	2	jako replace (viz.) ale nerozlišuje velikost písmen
ireplacefirst	2	jako replacefirst (viz.) ale nerozlišuje velikost písmen
isArray	žádné	vrací 1, je-li objekt pole, jinak 0
isDate	žádné	vrací 1, je-li objekt platné datum, jinak 0
isEmpty	žádné	vrací 1, nebyla-li objektu přiřazena žádná hodnota, jinak 0
isIdentifier	žádné	vrací 1, pokud objekt obsahuje řetězec, z kterého je možno vytvořit identifikátor proměnné; jinak 0
isIn	libovolně	vrací 1, pokud se objekt nachází v zadaném seznamu předaných parametrů, jinak 0
isNumeric	žádné	vrací 1, je-li objekt číslo, jinak 0
isNull	žádné	vrací 1, je-li objekt hodnoty Null, jinak 0
julian	žádné	převádí objekt ve formátu TDateTime na juliánské datum
julianm	žádné	převádí objekt ve formátu TDateTime na modifikované juliánské datum
key	1	je-li objektem pole, vrací klíč, v pořadí tolikátý, kolik určuje jeho parametr, v opačném případě vrací Null)
lastIndexOf	1	hledá v objektu podřetězec a vrací pozici posledního výskytu nebo –1 při neúspěchu
left	1	vrací levou část objektu, braného jako řetězec
len	žádné	vrací délku čísla v cifrách (v desítkové soustavě)
length	žádné	vrací délku objektu
lowercase	žádné	převádí řetězec na malá písmena (bez české diakritiky)
ltrim	žádné	odřízne (případné) mezery na začátku objektu
max	1	vrací větší z dvojice objekt – parametr
msec2dt	žádné	převádí objekt v milisekundách na TDateTime
min	1	vrací menší z dvojice objekt – parametr
neg	žádné	převede objekt do boolean a zneguje
nth	žádné	je-li objekt číslo, připojí k němu příponu řadové anglické číslovky ('st', 'nd', 'rd' nebo 'th')
numberfrom	1	převádí objekt z určené soustavy
numberto	1	převádí objekt do určené soustavy
o	žádné	převádí objekt do osmičkové soustavy
ord	žádné	to samé jako charCodeAt(0)
pad	1 nebo 2	doplní hodnotu objektu druhým argumentem (implicitně mezerami) na délku zadanou jako první argument
plural	1	podle zadaného čísla buď upraví nebo neupraví objekt na množné číslo přidáním koncovky -s. Končí-li objekt na -y, změní koncovku na -ies.
quote	0 nebo 1	"obalí" objekt do specifikovaného argumentu nebo (pokud není argument specifikován) do uvozovek
random	1	vrací náhodné číslo v rozsahu 0 až určený rozsah – 1
regex, matches	1	vrací 1, pokud objekt odpovídá vzoru, specifikovaném v argumentu, jinak 0
rep	1	zopakuje hodnotu objektu, kolikrát je to specifikováno
replace	2	v řetězci objektu nahradí všechny řetězce specifikovaným argumentem
replacefirst	2	v řetězci objektu nahradí první výskyt řetězce (pokud existuje) specifikovaným argumentem
right	1	vrací pravou část objektu, braného jako řetězec
round	0 nebo 1	zaokrouhlí číslo na přesnost (uvedenou parametrem) nebo na jednotky, pokud parametr není uveden
rtrim	žádné	odřízne (případné) mezery na konci objektu
sign	žádné	vrací znaménko z objektu (+1, -1 nebo 0)
stamp	žádné	opak 'datetime' – převádí datum na typ TDateTime
stuff	2	přepíše od pozice určené prvním argumentem objekt řetězcem v druhém argumentu
substr	1 nebo 2	vrací část řetězce definovaného počáteční pozicí a délkou. Je-li zadán pouze jeden argument, vrací vše od pozice dále.
substring	1 nebo 2	vrací část řetězce definovaného počáteční a koncovou pozicí. Je-li zadán pouze jeden argument, vrací vše od počáteční pozice dále.
swap	1	je-li objekt i argument název identifikátoru, vymění v tabulce symbolů jejich hodnoty
unixdate	žádné	převádí objekt ve formátu TDateTime na formát unixovského data
th	1	podle poslední číslice objektu vrátí příponu řadové anglické číslovky ('st', 'nd', 'rd' nebo 'th')
time	žádné	pokud je objektem datum, převede jej na čas ve formátu hh:mm:ss
todate	žádné	převede objekt na datum
todatetime	žádné	převede objekt do formátu TDateTime
tokenize	1	viz. cutstring
totime	žádné	převede objekt na čas
trailslash	žádné	přidá na konec objektu zpětné lomítko (pokud tam již není)
trim	žádné	odřízne mezery zleva a zprava
trunc	žádné	odsekne desetinnou část čísla
type	žádné	vrací číslo, odpovídající typu proměnné (stejně jako fukce VarType())
uppercase	žádné	převádí řetězec na velká písmena (bez české diakritiky)
urldecode	žádné	rozkóduje URL v objektu
urlencode	žádné	zakóduje URL v objektu
wrapped	2	pokud objekt v číselné podobě "omotaný" mezi specifikované minumum a maximum
Poznámka: Za implicitními metodami, které nemají žádné parametry, se nevyskytují závorky.


TDateTime
TDateTime je obecný numerický typ s plovoucí desetinnou čárkou s dvojitou přesností, který v sobě uchovává datum. Konkrétně tak, že celočíselná část čísla představuje počet dnů od 30.12.1899 a desetinná část čísla představuje denní dobu (například 0 odpovídá půlnoci, 0.25 šesti hodinám ráno, 0.5 poledni, a tak dále).


Řídicí struktury

Řídicí struktury jsou standardní bloky, upravující běh programu, které existují v různých obdobách ve všech vyšších programovacích jazycích, syntaxe zde je něco mezi jazykem C a Visual Basicem.

Jsou to tyto čtyři bloky:

if…endifwhile…endwhile

repeat…until

for…endfor

Mohou se do sebe libovolně vnořovat, ale než jeden blok skončí, musí předtím být ukončeny všechny bloky na jeho úrovni.

Poznámka: Podmínkové výrazy ve všech těchto blocích nemusí být nutně uzavřeny v závorkách, neboť interpret skriptovacího jazyku předpokládá, že za těmito výrazy již není žádná část, která by byla důležitá pro běh skriptu.


If…EndIf

Zápis if…endif je standardní konstrukce pro podmíněné vykonávání kódu pro většinu vyšších skriptovacích a programovacích jazyků. Může mít následující podobu:

if výraz1
  příkazy
elseif výraz2
  příkazy
  resetif
elseif výraz3
  příkazy
  exitif
else výraz4
  příkazy
endif

Sekce s elseif i s else je nepovinná. Počet větví elseif není nijak omezený. Část else může být v podmíněném příkazu uvedena maximálně jednou, a to vždy na konci.
Příkaz resetif způsobí, že běh programu bude moci opět vstoupit do některé z větví mezi if a endif, přestože se tak již stalo.
Příkaz exitif přesune běh programu na první příkaz za blokem if…endif.

Poznámka: Podmíněný překlad musí být vždy uzavřen klíčovým slovem endif, neexistuje alternativa podmíněného překladu na jedné řádce.


While…EndWhile

Cyklus while…endwhile je cyklus s podmínkou na začátku.

while výraz
  příkazy
endwhile

Pokud je výraz za while vyhodnocen negativně, běh skriptu přeskočí celou tuto strukturu, v opačném případě do něj vstoupí a začne vykonávat příkazy v ní obsažené. Při každém dosažení konce bloku testuje podmínku na začátku bloku. Je-li vyhodnocena kladně, běh skriptu pokračuje opět prvním příkazem bloku, v opačném případě skočí na první příkaz, co následuje za tímto blokem.

Poznámka: Struktura musí být vždy uzavřena klíčovým slovem endwhile, neexistuje alternativa zápisu celé struktury v jednom řádku a to ani kdyby tělo cyklu tvořil jeden nebo dokonce žádný příkaz.


Repeat…Until

Konstrukt repeat…until je cyklus s podmínkou na konci. Počet opakování tohoto cyklu není předem znám, provádění cyklu končí v okamžiku, kdy běh programu na poslední řádce cyklu testuje výstupní podmínku a tato je vyhodnocena jako pravdivá. Je dobré si uvědomit, že blok příkazů v těle cyklu bude vždy vykonán a to minimálně jednou. Pokud chcete cyklus s podmínkou na začátku, použijte cyklus While…EndWhile.

repeat
  příkazy
until výraz

Pokud běh skriptu narazí na strukturu repeat…until, vstoupí do ní a provede příkazy v těle tohoto cyklu. Při každém dosažení konce bloku se testuje výraz za until. Je-li vyhodnocen záporně, běh se přenese opět na první řádek uvniř bloku, v opačném případě běh skriptu tuto strukturu opustí a pokračuje prvním příkazem za touto strukturou.

Poznámka: Klíčové slovo until musí začínat na samostatné řádce, neexistuje jednořádková alternativa zápisu této struktury.


For…EndFor

Konstrukt for…endfor je cyklus s pevně učeným počtem opakování. V tomto jazyce je vpodstatě stejně flexibilní jako v jazycích C/C++. Za klíčovým for následují tři tokeny. První je inicializační část; druhá je podmínka, mající formu výrazu; třetí je úkon ve formě přiřazení, který se vykonává při každém dosažení konce cyklu (typicky by měl operovat s řídicí proměnnou, aby cyklus někam dospěl).

for(proměnná=výraz; podmínka; proměnná=výraz)
  příkazy
endfor

Poznámka: Cyklus musí být vždy uzavřen klíčovým slovem endfor, neexistuje alternativa zápisu cyklu do jednoho řádku, a to ani kdyby blok obsahoval jediný příkaz.

Poznámka: Začátek for…endfor bloku musí být uveden celý na jednom řádku - výjimečně se na něj nevzahuje možnost zalamování ani víceřádkových komentářů.

Když běh skriptu narazí na začátek for…endfor cyklu, přiřadí proměnné příslušný výraz v inicializační části a ihned poté zjišťuje, zda-li je splněna podmínka pro vstup do cyklu testováním výrazu v 2. části cyklu. Pokud je podmínka vyhodnocena záporně, běh skriptu celou strukturu for…endfor přeskočí a pokračuje prvním příkazem za ní. V opačném případě vstoupí do cyklu a začne vykonávat všechny příkazy v něm obsažené. Po vykonání posledního příkazu v těle cyklu, se provede 3. část začátku cyklu. Běh skriptu poté opět testuje podmínku v 2. části začátku cyklu. Pokud je splněna (příslušný výraz je vyhodnocen jako pravdivý), pokračuje se znovu prvním příkazem v těle for…endfor cyklu; v opačném případě běh programu cyklus for…endfor opět opakuje.

Příklad for cyklu, který operuje s dvěma řídicími proměnými:

for(i=0,j=-10;(i<4)||(j<2);i++,j+=4)
  log 'i=':i:', j=':j:';'
endfor

Tento cyklus vypíše postupně toto:
i=0, j=-10
i=1, j=-6
i=2, j=-2
i=3, j=2


Break

Příkaz break umožňuje běhu programu vyskočit z právě vykonávaného řídicího cyklu a progračovat prvním příkazem za ním. Příkaz break může mít i jeden parametr, jež specifikuje, z kolika nejbezprostřednějších řídicích cyklů má běh programu vyskočit.

Následující kód demonstruje použití příkazu break s parametrem:

repeat

 repeat

   repeat

    break(3)

    log "kapitola 1.1.1"

   until true

   log "kapitola 1.1"

  until true

  log "kapitola 1"

until true

Výše uvedený kód nevypíše na výstup nic, neboť díky příkazu break běh programu vyskočí ze všech tří cyklů.

Poznámka: Break se vztahuje jen ony čtyři výše zmíněné struktury, nikoli na blok if…endif. Pro něj použijte příkaz breakif. Taktéž není možné pomocí příkazu break vyskočit z konstrukce func…endfunc (k tomu je příkaz return), viz dále.


Funkce

HandyScript též umožňuje definování uživatelských funkcí a jejich použití ve výrazech apod. Deklarace funkce vypadá následovně:

func nazev_funkce(argument1=implicitni_hodnota1, argument2=implicitni_hodnota2, …)
  příkazy
endfunc

Argumentů může být více, nebo taky žádný (v tom případě za názvem funkce následují pouze závorky). Každý argument může mít deklarovánu implicitní hodnotu, která se použije, pokud při volání této funkce nebude argument na odpovídajícím místě specifikován. Pokud implicitní hodnota deklarována není (je deklarován pouze identifikátor argumentu) a ten není při volání specifikován, bude implicitní hodnotou prázdný řetězec.

Uživatelské funkce můžeme použít všude tam, kde se předává nějaká hodnota.

Poznámka: Při použití funkce musíme vždy uvést za jejím jménem závorky, a to i tehdy, když daná funkce nemá žádné argumenty. Jinak by se interpret jazyku pokoušel nalézt název funkce v tabulce symbolů.

Pokud chceme, můžeme libovolný z argumentů funkce vynechat. Lze vynechat i počáteční nebo prostřední argumenty, pokud nezapomeneme na čárky, které je oddělují.

func soucet(a=5, b=7, c=10)
  return(a+b+c)
endfunc
log soucet(,8,)     #vypíše na výstup 23, tedy 5+8+10

Podpora funkcí je pouze na základní úrovni - uvnitř funkce může být volána jiná funkce, nelze však do sebe navzájem vkládat definice funkcí.


return

Příkaz return uvnitř funkce (jinde neplatí), buď sám o sobě nebo s jedním parametrem, vyskakuje z funkce a případný parametr vrátí jako její výsledek. Příkazem return běh programu ve funkci nepokračuje - vždy se vrátí za místo, kde byla funkce zavolána.

Poznámka: Pokud funkce nemá mít žádnou návratovou hodnotu, použijte return bez parametru.

Poznámka: Příkaz return se vyskytuje pouze v těle funkcí.


Globální a lokální proměnné

Argumenty funkcí se v těle funkce během jejího zpracování stávají lokálními proměnnými. Tyto proměnné platí pouze po tu dobu, co je funkce vykonávana. Po opuštění funkce budou z tabulky symbolů vymazány. Může se stát, že v hlavním skriptu, mimo tělo funkce, používáte proměnnou, jejíž jméno se shoduje s některým z argumentů funkce; nebo si uvnitř funkce proměnnou tohoto jména znovu definujete. V takovém případě je původní, globální proměnná při zpracování funkce "překryta" proměnnou nově definovanou, lokální. To znamená, že všechny odkazy na proměnnou tohoto jména směřují k naposledy definovaným proměnným.

Vysvětlení rozdílu mezi globálními a lokálními proměnnými lze demonstrovat na následujícím kódu:

function soucin(a=0,b=0)
  return(a*b)
end_function

function faktorial(n=1)
  var I
  for(i=1;i<=n;i=i+1)
    result=soucin(result,i)
  end_for
  return(result)
end_function

log faktorial(5)

Tabulka symbolů v jednotlivých fázích vyhodnocení tohoto kódu postupně vypadá tak, jak ukazuje níže uvedená tabulka. Modře jsou vyznačeny nepravé symboly (identifikátory funkcí), které tvoří jakési zarážky, ohraničující dostupné symboly v tabulce (dostupné symboly jsou od prvního až po první zarážku nevčetně plus konce po poslední zarážku včetně). Pokud je v tabulce alespoň jedna zarážka, symboly nalevo od první zarážky označuji jako globální, symboly napravo od poslední jsou pak lokální symboly. Nedostupné symboly jsou bledší barvou.

(globální symboly)

(globální symboly)	faktorial
(globální symboly)	faktorial	n	i
(globální symboly)	faktorial	n	i	soucin
(globální symboly)	faktorial	n	i	soucin	a	b
(globální symboly)	faktorial	n	i

(globální symboly)


Asynchronní komunikace

HandyScript se dá nakonfigurovat tak, aby skripty, které spouští, uměly reagovat na asynchronní události. Stačí pro ten který účel definovat některé z níže uvedených událostních funkcí jako obyčejné funkce. HandyScript pak bude tyto události volat automaticky, vždy ihned poté, co nastanou, s patřičnými argumenty.

syntaxe události	kdy nastane
dropfile(soubor)	při přetažení souboru do okna interpreteru soubor=název přetaženého souboru
timechange()	při změně místního času
clipboard()	při změně obsahu schránky
devicechange(n)	při změně média jako např. CD n=0x8000 při vložení CD do mechaniky n=0x8004 při vysunutí CD z mechaniky
displaychange(w,h,d)	při změně rozlišení w=nová šířka h=nová výška d=bitová hloubka
wndmove(x,y)	při pohnutí okna x=horizontální souřadnice y=vertikální souřadnice
filemapping	při změně obsahu paměťového souboru synchronizovaného přes filemapping