ErrorAddr

Z Delphi & Pascal (česká wiki)
Verze z 19. 10. 2012, 23:10, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (Vytvorená stránka „ExitProc, ExitCode a ErrorAddr implementují výstupní proceduru aplikace. ExitProc umožňuje instalovat výstupní proceduru, která se bude volat ja...“)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

ExitProc, ExitCode a ErrorAddr implementují výstupní proceduru aplikace.

ExitProc umožňuje instalovat výstupní proceduru, která se bude volat jako součást ukončení programu. Výstupní procedura nemá žádné parametry a musí být přeložena s direktivou far, aby se zajistil vzdálený model volání. Správně instalovaná závěrečná procedura se ve skutečnosti stává jedním článkem celého řetězu závěrečných procedur. Tento řetěz umožňuje jednotkám stejně jako programům instalaci jejich vlastních závěrečných procedur.

Pro správný průběh závěrečných operací je nezbytné zachovat původní výstupní proceduru, tj. před instalací vlastní uložit její původní adresu, kterou obsahuje proměnná ExitProc.

První příkaz vaší vlastní závěrečné procedury musí uschovanou adresu původní procedury opět vrátit do proměnné ExitProc.

Závěrečná procedura může zjistit z obsahu proměnné ExitCode příčinu ukončení programu a z proměnné ErrorAddr adresu případné chyby.

  • V případě řádného ukončení programu je ExitCode roven nule a v ErrorAddr je hodnota nil.
  • Pokud program končí na základě volání procedury Halt, objeví se v ExitCode hodnota jejího parametru, ale ErrorAddr je stále nil.
  • Při vzniku chyby, která vede k ukončení programu, obsahuje ExitCode její číselný kód a ErrorAddr adresu příkazu, u kterého se chyba projevila.


Jako poslední se vždy provádí standardní závěrečná procedura, instalovaná přímo jednotkou System. Ta zavře standardní soubory Input a Output a obnoví vektory přerušení, které program při startu přebíral. Pokud není ErrorAddr rovno nil, vypíše navíc chybové hlášení. Poté, co knihovní podprogram zavolal všechny závěrečné procedury, vrací řízení DOSu nebo Windows, kam předává i návratový kód z proměnné ExitCode.