Chybové hlásenia Pascalu
Chyby je možné rozdeliť do dvoch kategórií, na chyby, ktoré sa hlásia pri preklade zdrojového textu programu a na tie, ktoré sa hlásia po spusteni preloženeho programu.
A. Chyby hlásené pri preklade
V tejto kapitole sú uvedené všetky chyby, ktoré prekladač hlási. V integrovanom prostredi sa automaticky nastavi kurzor na zdrojový riadok, na ktorom chyba vznikla. Chybové hlásenie je na stavovom riadku editoru a skladá sa z čísla chyby a krátkeho textu. Samostatný prekladač spoločne s hlásenim chyby zobrazi zdrojový riadok a označí miesto vzniku chyby. Niektoré chyby však prekladač detekuje o niekolko znakov či riadkov neskôr. Preto je potrebné hľadat potenciálnu chybu i tesne pred označenym miestom. Prekladač hlási len prvu nájdenú chybu.
1 Pretečenie pamäti
Chyba sa hlási, ak nemá prekladač dostatok pamäte. Možnosti, ako pamät uvolnit sú napr.: nastavit preklad na disk (volba C/Destination), nastavit vyrovnávaciu pamät zostavovania na disk (volba O/C/Link buffer), odstránit pamätovo rezidentné programy, použit na preklad samostatný prekladač, zjednodusiť a skrátiť prekladaný program rozdelenim do jednotiek.
2 Očakáva sa identifikator
3 Neznámy identifikator
4 Duplikovanie identifikatora
5 Chyba syntaxe
Neznámy znak v zdrojovom texte. Môžu chýbať reťazcové zátvorky (apostrof).
6 Chyba v konštante typu real
7 Chyba v konštante typu integer
8 Reťazcová konštanta dlhšia ako riadok
Môze chýbať uzatváracia zátvorka reťazca.
9 Mnoho vnorených súborov
Vnorenie pripojovanych súborov presiahlo osem úrovní.
10 Neočakávany koniec súboru
Zdrojový súbor končí pred posledným klúčovým slovom end, zrejme nesúhlasí počet begin a end, pripojovaný súbor končí uprostred prikazovej časti, chýba koncová komentárová zátvorka.
11 Dlhý riadok
Prekladač ignoruje znaky za poziciou 126.
12 Očakáva sa indentifikator typu
13 Mnoho otvorenych súboru
V systémovom súbore CONFIG.SYS je definovaný malý počet súborov, ktoré môžu byť súťčasne otvorené. Turbo Pascal vyžaduje podla okolností FILES=15 az 20.
14 Zlé meno súboru
V mene súboru je nedovoleny znak alebo neexistuje uvedená cesta.
15 Súbor alebol nájdený
16 Plný disk
17 Zlá direktiva prekladača
Písmeno pouzite na mieste direktivy pre prekladač nie je dovolené, chyba v parametri direktivy, globalna direktiva uprostred textu programu.
18 Mnoho súborov
Prekladá sa priliš mnoho súborov jednotiek, pripojovanych súborov. Je potrebné napr. spojit do jednoho súboru niekolko pripojovaných súborov alebo preverit rozdelenie do jednotiek.
19 Nedefinovany typ v definici ukazatela
20 Očakáva sa identifikator premennej
21 Chyba v type
Zlý symbol na začiatku definice typu.
22 Dlhá štruktúra
Maximalna dlžka štruktúry môže byt 65520 byte.
23 Bázovy typ množiny mimo rozsah
Bázový typ množiny môže byt interval, ktory ma hranice v rozsahu 0..255, alebo typ dany vymenivaním s maximalne 256 hodnotami.
24 Zložky súboru nemôžu byť súbory
25 Neplatná dlžka reťazca
Deklarovaná dlžka retazce môže byt v rozsahu 1 az 255.
26 Nekompatibilita typu
Nesúhlasia typy v dosazovacom prikaze, nesúhlasia typy formálneho a skutočného parametra, nesúhlasi typ v indexe pola, nesúhlasia typy operandov vo výraze.
27 Neplatný interval
Interval môže byt len skalarneho typu.
28 Spodná hranica je väčšia ako horná
Deklarácia intervalu má spodnú hranicu väčšiu ako hornú.
29 Očakáva sa ordinalny typ
Nie je dovolený typ real, retezec, strukturovany typ a ukazatel.
30 Očakáva sa konštanta typu integer
31 Očakáva sa konstanta
32 Očakáva sa konštanta typu integer alebo real
33 Očakáva sa identifikator typu
34 Neplatný typ výsledku funkce
Výsledok funkcie môže byt len jednoducheho typu, typu reťazec a ukazatel.
35 Očakáva sa identifikator návestia
36 Očakáva sa BEGIN
37 Očakáva sa END
38 Očakáva sa vyraz typu integer
39 Očakáva sa ordinalny výraz
40 Očakáva sa logický výraz
41 Typ operandu nezodpovedá operátoru
42 Chyba vo výraze
Nedovolený symbol vo vyraze, chýba operator medzi operandami.
43 Nedovolené dosadenie
Nie je možné dosadzovat hodnotu do súboru alebo netypovej premennej, výsledok funkcie sa dosazuje len v tele funkcie.
44 Očakáva sa identifikator zložky zaznamu
45 Súbor .OBJ je priliš velky
Súbor je väčší ako 64k byte
46 Nedefinovany externý symbol
Meno externe procedury alebo funkce nie je v súboru .OBJ pouzité.
47 Neznamy zaznam v súbore .OBJ
Je pouzitý súbor ineho typu, porusena vnútorná štruktura súboru, nutné znova preložit prislusny zdrojovy text.
48 Segment kodu priliš velky
Maximalna dlžka kódoveho segmentu programu alebo jednotky je 65520 byte. Je nutne presunut niektoré podprogramy do inej jednotky alebo rozdelit na niekolko jednotiek.
49 Segment dat priliš velky
Maximalna velkost datoveho segmentu program je 65520 byte vrátane datovych segmentov pouzitych jednotiek. Aj je v programe potrebné viac dat než je dovolené, je nutné pouzit dynamickú promennú a pridelit pamät za behu programu.
50 Očakáva sa DO
51 Chyba v symbolu PUBLIC
Identifikator zo súboru .OBJ nema zodpovidajúcu externú deklaraciu v zdrojovom texte programu v Turbo Pascalu, duplicita identifikatorov v súboru .OBJ, PUBLIC symbol v súboru .OBJ nie je v kodovom segmente.
52 Chyba v symbolu EXTERN
Identifikator zo súboru .OBJ nemá zodpovidajúcu deklaraciu v programe alebo jednotke, identifikator sa odkazuje na premennu deklarovanou ako absolute, identifikator sa odkazuje na proceduru alebo funkciu deklarovanu ako inline.
53 Prilis mnoho definic EXTERN
V súbore .OBJ môže byt maximalne 256 externých definicií.
54 Očakáva sa OF
55 Očakáva sa INTERFACE
56 Nedovoleny relokatibilny odkaz
V súbore .OBJ sú data alebo kod v inom segmente nez segmente CODE. Napr. sú deklarované data s pociatocnou hodnotou v segmente DATA, v súboru .OBJ je bytovy odkaz na relokatibilny symbol. Napr.je pouzitý operator LOW alebo HIGH s relokatibilnym symbolem alebo je odkaz na relokatibilni symbol v instrukci DB
57 Očakáva sa THEN
58 Očakáva sa TO alebo DOWNTO
59 Nedefinovana deklaracia FORWARD
Procedura alebo funkcia deklarovana v casti interface nema definiciu v casti implementation, procedura alebo funkcia deklarovana ako forward nema definiciu.
60 Prilis mnoho procedur
V jednej jednotke môže byt maximalne 512 deklaracii procedur alebo funkcii. Je potrebné prekladanu jednotku rozdelit alebo presunut niekolko podprogramov do inej jednotky.
61 Nedovolene pretypovanie
Líši sa velikost pretypovavanej premennej a premenne, do ktorej sa dosazuje, neda sa pretypovat vyraz.
62 Delenie nulou
63 Nedovolený typ súboru
Štandardná procedura nedovoluje tento typ súboru, napr. Readln s netypovym súborom alebo Seek v textovom súbore.
64 Premenna nedovoleneho typu v Read alebo Write
Read a Readln môže citať premenne typu char, integer, real a retezec, Write a Writeln môže vypisovat hodnoty premennych typu char, integer, real, boolean a retazec.
65 Očakáva sa ukazatel
66 Očakáva sa retezec
67 Očakáva sa retezcovy vyraz
68 Cyklicky retez odkazu na jednotky
69 Nesouhlasi meno jednotky
meno jednotky v súboru .TPU nesouhlasi sa jmenem v casti uses
70 Nesuhlasi verzia jednotky
Niktoré z pouzitych jednotiek sa zmenily od doby, ked boli naposledy prelozené. Je potrebné jednotky znovu prelozit.
71 Duplikovanie mena jednotky
72 Chyba formatu v súbore .TPU
73 Očakáva sa IMPLEMENTATION
74 Nesuhlasi typ konstant v prikaze CASE
75 Očakáva sa premenna typu zaznam
76 Konstanta mimo rozsah
Konstanta v indexe pola mimo rozsah, dosadzovana konstanta mimo rozsah, konstanta skutocneho parametru mimo rozsah formalneho parametru.
77 Očakáva sa premenna typu súbor
78 Očakáva sa vyraz typu ukazatel
79 Očakáva sa vyraz typu integer alebo real
80 Navesti nie je v tomto bloku
Prikaz goto s navestim, ktoré je mimo tento blok.
81 Navesti uz bolo pouzité
82 Nedefinovane navestie
83 Nedovoleny argument operatora @
Môže sa pouzit meno premenne a procedury alebo funkce
84 Očakáva sa UNIT
85 Očakáva sa bodkočiarka
86 Očakáva sa dvojbodka
87 Očakáva sa ciarka
88 Očakáva sa lava zatvorka
89 Očakáva sa prava zatvorka
90 Očakáva sa rovnitko
91 Očakáva sa ':='
92 Očakáva sa '[' alebo '(.'
93 Očakáva sa ']' alebo '.)'
94 Očakáva sa bodka
95 Očakáva sa '..'
96 Prilis mnoho premennych
celkova dlžka premennych presiahla 64k byte.
97 Nedovolena riadiaca premenna cyklu FOR
Riadiaca premenna musi byt jednoducheho typu a deklarovana v sucasnom bloku.
98 Očakáva sa premenna typu integer
99 Nedovolene pouziti súboru
Konstanta s typem nemôže byť typu súbor
100 Nesouhlasi delka retezce
Dlžka retazcovej konstanty nesuhlasi s dlžkou pola
101 Nedovolene poradie zlozek v zazname
102 Očakáva sa retezcova konstanta
103 Očakáva sa premenna typu integer alebo real
104 Očakáva sa premenna ordinalneho typu
105 Chyba v INLINE
operator < nie je povolený s odkazom na premennu
106 Očakáva sa znakovy vyraz
107 Prilis mnoho relokacných zaznamov
Velkost relokacnej tabulky súboru .EXE presahla 64k byte, tj. program je prilis velky pre zostavovaci program. Je nutne program rozdelit na dva ci viac programov, ktoré sa volaji prostrednictvom procedury Exec.
112 Konstanta v CASE mimo rozsah
113 Chyba v prikaze
Zlý symbol na zaciatku programu
114 Procedura typu INTERRUPT sa nemôže volat
116 Nie je povolen prepinac $N
Pouzita konstrukcia sa da prelozit len s prepinacem {$N+}
117 Chybova adresa sa nenašla
Nenašla sa zadana adresa pri hladani zdrojoveho radku, ktory hlasi chybu za behu programu.
118 Zlé umiestenie direktivy na pripojenie súboru
120 Očakáva sa NIL
121 Nedovolene pouzitie
Premenna s indexom nie je pole, premenna sa zlozkou nie je zaznam, premenna s nepriamym odkazom nie je ukazatel.
122 Nedovoleny odkaz
Vysledkom konstrukcie nie je odkaz na premennu, napr. vola sa funkcia, ktora vracia ukazatel, ale chýba nepriamy odkaz (^).
123 Prilis mnoho symbolov
Program alebo jednotka deklaruje viac ako 64K byte symbolov, je potrebné niekolko symbolov presunut do inej jednotky.
124 Prilis velka prikazova časť procedury alebo funkcie
Velkost prikazovej casti môže byt cca 24k byte, je potrebné ju rozdelit do podprogramov.
126 Súbor môže byt len premenny parameter
127 Prilis mnoho podmienenych symbolov
Je potrebné skratit dlžku symbolu alebo nektoré vypustit.
128 Nespravne umiestena instrukce podmineneho prekladu
Instrukcia $ELSE alebo $ENDIF bez zodpovidajiceho $IFxxx
129 Chýba instrukcia ENDIF
130 Chyba v definici symbolu
Chyba v zapise ponuky O/C/Conditional defines alebo v direktive /D u samostatnej verzie prekladaca.
131 Hlavicka procedury alebo funkce nesouhlasi
Hlavicka uvedena v casti interface nezodpoveda, hlavička uvedena ako forward nezodpovida.
132 Kriticka chyba disku
Chyba disku behom prekladu, napr. disk nie je pripravený.
133 Neda sa vyčíslit vyraz
Nedefinovany operand konstantného vyrazu
134 Zlý koniec vyrazu
135 Nedovolena specifikacia formatu
Zlé oznacenie formatu, čislo mimo rozsah formatu
136 Nedovoleny neprimy odkaz
napr. absolutna premenna s neznamym typem, funkce typu inline, ktora sa odkazuje na neznamu premennu apod.
137 Nedovolene pouzitie strukturovanych premennych
138 Neda sa vyčislit bez jednotky System
139 Nedosazitelny symbol
Niektoré symboly sú pre ladiaci program nedosažitelne, pokiaľ sa ladený program nespusti.
140 Nedovolená operácia v pohyblive rádovej čiarke
Pretečenie výsledku operácie alebo delenie nulou.
141 Nedá sa prekladat rozsirujici moduly do pamäti
142 Očakáva sa identifikator procedury alebo funkce
V tomto mieste môže byt operator @ pouzity len na identifikator procedury alebo funkcie.
143 Nedovoleny odkaz na proceduru alebo funkciu
Volanie procedury vo vyraze, procedura alebo funkce, ktorej adresa sa ma dosadit do premennej zodpovedajúceho typu, sa musi prekladat s prepinacem {$F+} a nemôže byt typu inline alebo interrupt.
144 Nedá sa pouzit ako rozsirujici modul
pokus o definovani rozsirujuceho modulu, ktory nie je prelozeny s prepinacem {$O+}
B. Chyby hlásene za behu programu
Pokiaľ sa program spusti z integrovaneho prostredia, hlasia sa chyby za behu programu rovnako ako chyby pri preklade tj. kurzor sa nastavi na miesto chyby a chybove hlasenie je na stavovom riadku editora. Chybove hlasenie sa sklada z cisla chyby a kratkeho textu. Pokiaľ sa program spusti mimo integrovane prostredie, ohlasi sa chyba cislom a adresou, kde bola detekovaná. Chyby za behu programu sa delia na chyby systemu (cisla 0 az 99), chyby vstupu a vystupu (cisla 100 az 149), kriticke chyby (cisla 150 az 199) a havarijne chyby (cisla 200 az 255).
2 Súbor neexistuje
Hlasia procedury Reset, Append, Rename, Erase, pokiaľ súbor prislusneho mena neexistuje.
3 Cesta neexistuje
Hlásia procedury Reset, Append, Rename, Erase, pokiaľ je priradene meno súboru chybne alebo specifikuje neexistujici adresar. Hlasia Chdir, Mkdir, Rmdir, ak je chyba v specifikacii cesty alebo cesta urcuje neexistujuci adresar
4 Prilis mnoho otevrenych súboru
Hlásia procedury Reset, Rewrite, Append, ak presiahne program povoleny pocet otvorenych súborov. Je potrebné zkontrolovat súbor CONFIG.SYS, prikaz FILE=.
5 Odmietnuty pristup k súboru
Hlásia Reset, Append, dovoluje-li FileMode zapis a prirazeny súbor je urcen len pro cteni.
Hlásia Rewrite, ak je podadresar plny alebo priradene meno specifikuje adresar alebo je súbor urcen len pro cteni.
Hlási Rename, ak specifikuje prirazene meno adresar alebo ak existuje súbor tohto mena, na ktore sa ma súbor premenovat.
Hlási Erase, ak specifikuje priradene meno adresar alebo súbor urceny na citanie.
Hlási Mkdir, ak už existuje súbor tohto mena, ak nie je v adresari dost miesta alebo ak specifikuje cesta meno standardného zariadenia.
Hlási Rmdir, nie je-li ruseny adresar prazdny, ak meno nespecifikuje adresar alebo ak specifikuje korenovy adresar
Hlásia Read, BlockRead, ak nie je súbor otvorený pro čítanie
Hlásia Write, BlockWrite, ak nie je súbor otvorený pro zapis
6 Nedovoleny systemovy kanal súboru
Tato chyba indikuje,ze program nekontrolovatelne prepisuje pamät, inak tato chyba nemôze nastat.
12 Nespravny pristupovy kod súboru
Hlasia Reset, Append, ak je nespravny obsah premennej FileMode.
13 Zlé cislo mechaniky
Hlasi Getdir.
16 Adresar Nedá sa zrusit
Hlasi Rmdir, ak specifikuje cesta aktivny adresar.
17 Zlé parametre premenovania
Hlasi Rename, ak neurcuji obe mena rovnaký adresar.
100 Chyba pri čítani z disku
Hlasi Read pri pokusu o číteni za koncom súboru.
101 Chyba pri zapisu na disk
Hlasi Write, Close, Writeln, Flush, Page pri plnom disku.
102 Nebyl prirazen súbor
Hlasi Reset, Rewrite, Append, Rename, Erase, ak nebolo súborovej premennej priradené meno súboru procedurou Assign.
103 Súbor nie je otvorený
Hlási Close, Read, Write, Seek, Eof, Filepos, Filesize, Flush, BlockRead, BlockWrite, ak nie je v okamziku ich volania súbor otvorený.
104 Súbor nie je otvorený na čítenie
Hlasi Read, Readln, Eof, Eoln, Seekeof, Seekeoln na textovom súbore, ak nie je súbor otvoreny na čítanie.
105 Súbor nie je otvoreny na zapis
Hlási Write, Page na textovom súbore, ktory nie je otvorený na zapis
106 Nedovoleny format cisla
Hlasi Read, Readln, ak nezodpovedá typ čítenej hodnoty prislusnej premennej
150 Disk je chraneny proti zapisu
151 Neznama jednotka
152 Mechanika nie je pripravena
153 Neznamy prikaz
154 Chyba zabezpecenia dat (CRC)
155 Zlá dlžka struktury poziadavky
156 Chyba vystavenia na disku
157 Neznamy typ media
158 Sektor nebol nájdený
159 V tlačiarni nie je papier
160 Chyba pri zapisu na zariadenie
161 Chyba pri čítení z zariadenia
162 Hardwarova chyba
200 Delenie nulou
201 Chyba rozsahu hodnoty
Hlási sa na prikazu, ktory bol prelozeny s prepinacom {$R+}, hodnota vyrazu v indexe pola je mimo rozsah pola, hodnota dosadzovana do premennej je mimo jej rozsah, hodnota skutocneho parametru je mimo rozsah formalniho parametra.
202 Pretecenie zasobnika
Hlási sa pri vstupe do procedury alebo funkcie, ktora bola prelozena s prepinacem {$S+} a v zasobniku nie je dostatok mista na lokalni a pomocne premenne. Je potrebné zväčšit velkost zasobnika v direktive $M.
203 Pretecenie haldy
Hlási New, GetMem, ak nie je k dispozici dostatok volnej pamäti pre promennu pozadovanej velkosti. Je nutne zväčšit pozadovanu velkost pridelenej volnej pamäti v direktive $M alebo snizit naroky na pamät.
204 Nedovolena operace s ukazatelem
Hlasi Dispose, FreeMem, ak ma ukazatel hodnotu NIL alebo ak ukazuje na pamätove miesto mimo haldu alebo preteekol zoznam volnych casti pamäti (pamät je "rozkuskovana").
205 Pretecenie v pohyblivej radovej ciarke
206 Podtecenie v pohyblivej radovej čiarke
207 Nedovolena operacia v pohyblivej radovej čiarke
Hodnota typu real vo funkci Trunc alebo Round presahuje rozsah hodnôt typu longint, parameter funkcie Sqrt je zaporny, parameter funkcie Ln je nula alebo zaporny, pretiekol zasobnik koprocesora, koprocesor hlasi delenie nulou.
208 Nie je instalovaný system pre rozsirujúci moduly
Program vola proceduru alebo funkciu z rozsirujúceho modulu, ale system pre rozsirujúce moduly nie je instalovaný alebo inicializovaný. Zrejme sa nevolá procedura OvrInit alebo hlási chybu, ktorú program ignoruje.
209 Chyba pri čítani súboru s rozsirujucim modulom