Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu


Úvod do jazyka OPL (8)

aktualizováno 
Pokračujeme v pokročilejším programování v OPL.

Práce se soubory a adresáři

Jazyk OPL nabízí pestrou paletu funkcí pro kopírování, přejmenovávání a mazání souborů a adresářů. Soubory je možné kopírovat příkazem COPY, mazat (DELETE) a přejmenovávat (RENAME). Příkazem MKDIR "C:\TMP\AAA" vytvoříme podadresář AAA v adresáři TMP; pokud adresář TMP před tím neexistoval, bude vytvořen také. Adresáře mažeme příkazem RMDIR.

PROC vypis:
  LOCAL s$(255)
  s$=DIR$("Z:\System\OPL\*.o?h") : REM -- v paměti ROM --
  PRINT "Výpis adresáře"
  WHILE s$<>""
    PRINT s$
    s$=DIR$("")
  ENDWH
  GET
ENDP
i%=EXIST(soubor$)

Funkce EXIST slouží ke zjištění, zda daný soubor existuje; pro zjištění obsahu adresáře používáme funkci DIR$ jako v předchozím příkladu. Konečně příkazem SETPATH nastavujeme základní adresář pro soubory programu - pro přístup k souborům v tomto adresáři nemusíme uvádět plnou cestu k souboru.

Otevírat a vytvářet různé soubory se naučíme v příští sérii článků. Pokud volání uvedených příkazů není úspěšné (například pokud je mazaný soubor chráněn proti zápisu), tak uvedené příkazy generují systémovou chybu a provádění programu je předčasně ukončeno. Tomuto chování můžeme předejít vlastním zpracováním chyb pomocí příkazu TRAP nebo ONERR.

Ošetření chybových situací v OPL

V běžícím programu OPL může dojít k chybám, které zastaví běh programu a na displeji zobrazí okno s informací o typu a umístění chyby. K takovým chybám dochází například při pokusu o dělení nulou, není-li nalezena proměnná nebo selže-li nějaký příkaz OPL (například pokud příkaz COPY nenajde soubor, který má kopírovat).

Uživatel však od našeho programu čeká elegantnější chování, než je ukončení programu s chybovou hláškou, kdykoliv dojde k chybě. Proto se musíme pustit do zpracování chyb v našem programu sami. Srovnejte následující dvě procedury, které se pokoušejí kopírovat neexistující soubor:

PROC prvni:
  COPY "C:\neexistuje","Z:\"
  GET
ENDP

PROC druha:
  TRAP COPY "C:\neexistuje","Z:\"
  PRINT "Chyba kopírování ("; ERR$(ERR); ")"
  GET
ENDP

Zatímco první procedura skončí s nepěknou systémovou chybovou zprávou, druhá procedura jen vypíše zprávu o chybě na displeji a případně dovolí uživateli dále pokračovat. Druhá procedura nám také ilustruje první způsob zpracování chyb - spornému příkazu (APPEND, BACK, CANCEL, CLOSE, COPY, CREATE, DELETE, ERASE, EDIT, FIRST, gCLOSE, gCOPY, gFONT, gPATT, gSAVEBIT, gUNLOADFONT, gUSE, INPUT, INSERT, LAST, LCLOSE, LOADM, LOPEN, MKDIR, MODIFY, NEXT, OPEN, OPENR, POSITION, PUT, RENAME, RMDIR, UNLOADM, UPDATE nebo USE) předřadíme klíčové slovo TRAP. Pokud tento příkaz vyvolá chybu, tak náš program bude přesto pokračovat a v proměnné ERR bude vrácen kód této chyby.

ONERR navesti::
ONERR OFF

Druhý způsob je pomocí bloku mezi příkazy ONERR a ONERR OFF. Pokud v tomto bloku dojde k chybě, provede OPL program skok na návěští, které bylo uvedeno za příkazem ONERR.

PROC chyba:
  ONERR chyba
  PRINT "Dělení nulou = "; 100/0
  PRINT "OK"
  GET
  ONERR OFF
  RETURN
  REM --- Zpracování chyby ---
  chyba::
  PRINT "CHYBA "; ERR$(ERR)
  GET	
ENDP



Nejčtenější

Nový „levný“ iPhone má být hit. Prodat se ho má 100 milionů

Trojice iPhonů pro rok 2018

Apple chystá na letošní rok tři nové iPhony. Jedním z nich má být levnější model, který nebude mít OLED displej. A...

Nepoužívejte smartphony Huawei a ZTE, varují Američany FBI, CIA i NSA

Huawei Mate 10 Pro bude v USA k dostání u BestBuy

Huawei chtěl letos vzít útokem Spojené státy, a to s pomocí tamních klíčových operátorů. Z možné dohody však nakonec...



Vodafone extrémně vylepšuje rodinné tarify. Zadarmo přidává 8 GB a VDSL

Vodafone (ilustrační fotografie)

Není obvyklé, aby operátor výrazně vylepšil tarif a nesáhl na cenu. V případě inovovaných rodinných tarifů Red+ tomu...

Teď přijde řada na naše peníze. V Číně totiž končí zlaté časy

Xiaomi Mi 6

Čínský trh s chytrými telefony je největší na světě, ale loni se podle všeho dostal do potíží. Po letech růstu přišel...

Lidé si stěžovali na špatný signál. Rušil ho těžař bitcoinů

(Ilustrační snímek)

Newyorští zákazníci amerického operátora T-Mobile si stěžovali na znatelný šum během telefonních hovorů. Ukázalo se, že...

Další z rubriky

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....

Bez reklamy ani ránu. Bude už i na Facebook Messengeru v mobilu

Mobilní Messenger projde změnou, k nelibosti uživatelů v něm budou cílené...

Oblíbený mobilní kecálek se brzy promění. Facebook totiž do Messengeru po úspěšném testování implementuje cílené...

Na aplikace alternativních taxi útočí virus. Pase po údajích ke kartám

Virus pro Android

Uživatelé mobilních aplikací alternativních taxi včetně aplikace Uber by měli být obezřetní. Ohrožuje je totiž nový...

Najdete na iDNES.cz