Apple Script - rozhodování - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se narodil známý fotograf František Drtikol?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Software

Apple Script - rozhodování

16. srpna 2006, 00.00 | V životě se mnohdy dostaneme do situace kdy se musíme rozhodnout pro jedno, nebo pro druhé. To už v AppleScriptu umíme, často se ale rozhodneme špatně, prostě zkusíme jednu možnost a když se to nepovede, je to ta druhá. A právě to se naučíme dnes naprogramovat.

Při psaní programů můžeme narazit na mnoho chyb, které způsobí špatně nadefinovaná proměnná, špatný příkaz, nebo cokoli jiného, co se snaží nám programování ztížit. Taková chyba pak zastaví průběh programu a přihlásí se o naši pozornost. Mnohdy ale chybu předpokládáme, nebo na ni dokonce čekáme a potřebujeme na ni reagovat a pokračovat v programu. K tomu slouží příkaz, který si dnes představíme. Je to příkaz try.

Příkaz try se používá stejně jako if ve víceřádkovém provedení, jako ohraničení jiných příkazů. Začínáme ho samotným příkazem try na samostatném řádku a končíme end try také na samostatném řádku. Vše obsažené v tomto bloku je normálně provedeno, tedy pouze do chvíle, dokud nenastane chyba. V takovém případě je vše co následuje za chybou vynecháno a program pokračuje za try blokem. Nejlépe si to ukážeme na příkladu. Napište do nového okna:

display dialog "napis cislo" default answer 0
try 
set vysledek to text returned of result as integer
display dialog "Tve cislo je: " &  vysledek
end try
beep 2

Program zkompilujte a spusťte. Nejdříve napište nějaké číslo, které vám program ukáže jako vaše číslo a vše zakončí dvojitým pípnutím. Napište ale místo čísla text a uslyšíte už jen pípnutí. V prvním případě je text returned bez problémů převeden na integer a proto nám to program i sdělí dialogem a nakonec vydá dva zvuky, které následují za try blokem. Ve druhém případě ale první příkaz za try způsobí error, který ale náš program nezastaví, ale pouze vynechá dialog sdělující nám naše číslo a vše zakončí dvojitým pípnutím které není v try bloku a není tedy vynecháno. Jen tak pro zajímavost, když vyhodíte try a end try a napíšete místo čísla text, program skončí errorem aniž by vydal nějaké zvuky.



Co ale dělat v případě že právě když nastane chyba potřebujeme aby se něco stalo? Můžeme na začátku definovat nějakou proměnnou např. trystatus jako false a na konci, pokud vše proběhlo bez problémů, přepíšeme proměnnou na true a po skončeni try bloku se jednoduše ifem zeptáme zda je trystatus true a vše je v pořádku, nebo nastala nějaká chyba a my na ní patřičně reagujeme. Tento způsob je ale na AppleScript složitý a proto na to máme v AppleScriptu jednoduchý příkaz, respektive rozšíření try příkazu. Je to on error, kterým z try vytvoříme jednoduchou výhybku, ve které něco zkusíme a pokud se to nezdaří, nastane error, stane se něco jiného. On error doplníme do try bloku mezi try a end try, přičemž vše od začátku až po on error se spouští postupně dokud nedosáhneme posledního příkazu, nebo nenastane chyba. V takovém případě se zbylé věci v try bloku ignorují a spouští se část následující za on error. V případě že problém nenastane, nestane se ani nic z toho co je za on error.


On error nám toho ale nabízí více. Můžeme jednoduše zjistit jaká chyba byla příčinou a dokonce získat její číslo, takové to oblíbené záporné číslo které nám programy sdělují, když se odporoučí do věčných lovišť. Normálně z takových čísel radost nemáme, ale tady je můžeme využít pro dobro věci. Například při chybě kdy uživatel něco zruší mu to asi nebudeme znovu připomínat dialogem, zato v případě že zadal špatnou hodnotu ho rádi požádáme o opravu. A jak na to? Jednoduše. Chceme-li vědět název chyby, přímo za on error napíšeme jméno proměnné do které chceme chybu uložit. Pro číslo chyby musíme ještě doplnit slovo number následované další proměnnou.




V případě že potřebujete reagovat pouze na jednu chybu, můžete to udělat rovnou. Skript upravte takto:
try
	display dialog "napis cislo" default answer 0
	set vysledek to text returned of result as integer
	display dialog "Tve cislo je: " & vysledek
on error number -128
	display dialog "Opravdu Cancel?"
end try
beep 2

Nyní je první dialog součástí try bloku a tedy v případě že zmáčkneme Cancel dojde k aktivování on error. Když nezadáme číslo, program se přihlásí s chybou, jako by try blok nebyl použit. Tímto způsobem, nebo klasickým ifem za on error můžeme odchytit spoustu chyb a jednotlivě na ně reagovat. Jaké ty chyby ale jsou? Následuje stručný seznam oněch záporných neštěstí které jsou v počítači schované a čekají na svoji příležitost. Vzhledem k faktu že nepoužívám lokalizovaný systém uvádím pouze jejich anglická znění.

–34	Disk <name> is full.
–37	Bad name for file.
–39	End of file error.
–43	File <name> wasn’t found.
–44	Disk <name> is write protected.
–47	File <name> is busy.
–48	Duplicate file name.
–49	File <name> is already open.
–61	File not open with write permission.
–120	Folder <name> wasn’t found.
–128	User canceled.
–1700	Can’t make <data> into a <type>.
–1708	<reference> doesn’t understand the <commandName> message.
–1712	Apple event timed out.
–1728	Can’t get the specified item.
–1730	Container specified was an empty list.
–2701	Can’t divide <number> by zero.
–2702	The result of a numeric operation was too large.
–2703	<reference> can’t be launched because it is not an application.
–2704	<reference> isn’t scriptable.
–2705	The application has a corrupted dictionary.
–2708	Attempt to create a value larger than the allowable size.
–2721	Can’t perform operation on text longer than 32K bytes.
–2753	The variable <name> is not defined.
–30720	Invalid date and time <date string>. 


To je pro dnešek vše, pokud chcete můžete si do příště něco zkusit a třeba se lépe poznáte i s nějakou tou chybou, nebo jí naopak naučíte poslouchat a neukazovat se. Příkaz try má široké využití a spolu s if a repeat jsou základem složitějších programů. A právě na repeat se podíváme příště.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Dik a vytrvej!

Autor: radimv Muž

Založeno: 17.08.2006, 01:29
Odpovědí: 0

Autorovi dik a doufám že mu síly vydrží ještě na několik dílů...

Zatim zdar

Odpovědět na příspěvek

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: