Zachytenie erroru v Pascale

Programovacie jazyky, rady, poradňa...
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Zachytenie erroru v Pascale

Príspevok od používateľa Pilifo »

Je možné v Pascale (resp. Free Pascale) zachytiť error a v prípade, že by mal spadnúť program, napr. pri delení 0, by sa vypísalo "Error"?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

vsetko sa da cez podmienky, alebo cez typ boolean
Alebo skus toto:

Kód: Vybrať všetko

uese crt;
var x:integer;
    CHYBA:boolean;

begin 
  repeat 
     write('Vlož číslo: '); 
     {$I-} readln(x); {$I+} 
     CHYBA := IOResult <> 0; 
     if CHYBA then writeln('Chyba vstupu!') 
  until not CHYBA; 
  writeln(x);
end. 
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

delenie nulou ti hodí štandartnú výnimku, to pekne (ako aj vela iných chýb) ošetrší pomocou try-except

Kód: Vybrať všetko

begin
   writeln('start');
   a :=  1;
   b :=  a - 1;
   try
     a := 1 div b;
   except
     writeln('Error');
   end;
    writeln('end');
 end.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

try-catch v pascale?? nebolo to az vysadou delphi???
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

neviem, toto som vygooglil. Nakoľko je zdroj dôveryhodný ti povedať neviem, lebo som to v pascale nikdy neriešil :)
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Príspevok od používateľa Pilifo »

Tak skúsil som naprogramovať niečo podobné, ako tam hodil audiotrack, ale Borland Pascal takýto príkaz vôbec nepozná a Free Pascal vypisuje "Identifier not found", pričom však berie tento príkaz ako normálny :?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

Pilifo napísal:Tak skúsil som naprogramovať niečo podobné, ako tam hodil audiotrack, ale Borland Pascal takýto príkaz vôbec nepozná a Free Pascal vypisuje "Identifier not found", pričom však berie tento príkaz ako normálny :?
a deklaroval si si premenné a a b?
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Príspevok od používateľa Pilifo »

audiotrack napísal:a deklaroval si si premenné a a b?
Samozrejme, ale nešlo.
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

a to co napisal BX nefunguje? ak ma pamat neklame tak takto nejak sa to tam riesilo ...
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Príspevok od používateľa Pilifo »

gwixt napísal:a to co napisal BX nefunguje? ak ma pamat neklame tak takto nejak sa to tam riesilo ...
No to funguje, ale neviem, ako by som to aplikoval na môj prípad - delenie 0 :?

Neviete, ako je tiež možné, že Free Pascal nepozná TRY a EXCEPT?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

Ucil som sa ze IOResult ma zachytavat chyby pri ktorych by program normalne spadol, tagze som si myslel ze to bude aj v tomto pripade, ale asi nie - prepac :oops:
Nechapem len ja ze preco to nerobis pomocou IF :?:
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Pilifo napísal:No to funguje, ale neviem, ako by som to aplikoval na môj prípad - delenie 0 :?

Neviete, ako je tiež možné, že Free Pascal nepozná TRY a EXCEPT?
Nič v zlom, ale pri delení nulou nepotrebuješ "špeciálny systém na kontrolu chýb". ;) (teda ak nejde o delenie ktoré je pri inicializácii Crt knižnice, ale na to sú záplaty)

Free Pascal pozná aj try/except, ale je možné, že to nie je štandardne v kompilátore povolené (zapínalo sa to voľbou "Object Pascal extension on").
Napísať odpoveď