Chybové hlásenia Pascalu

27.11.2010 20:51

 

 

      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