[Pascal] zapezpieczenie programu przed błędnymi danymi


(Lexander) #1

Witam, mam pytanie:

Jak zabezpieczyć program żeby w przypadku gdy oczekuje on liczby a dostanie literę nie zamykał się tylko pokazał komunikat o nieprawidłowych wprowadzonych danych?


(Drobok) #2
repeat 

    write('Podaj liczbe: '); 

    {$I-} 

    readln(a); 

    {$I+} 

    i := ioresult; 

    if i<>0 then 

      writeln('Nieprawidłowe wprowadzenie danych'); 

  until i=0;

Gdzie i,a:integer;


(Lexander) #3

Dzięki, czy to uchroni usera również przed wspisaniem za dużych liczb np 99999999999 do zmiennej typu word?


(Drobok) #4

Nie pamiętam, spróbuj :slight_smile:


(Lexander) #5

Nie działa.

mam to tak:

write('Podaj max. liczbę punktow: ');

readln©;

spr:=ioresult;

if spr<>0 then begin writeln('Nieprawidłowa liczba'); goto 1; end;

po wpisaniu c jest runtime error.


(Drobok) #6

Nie masz dwóch najważniejszych w tym wypadku linijek:

{$I-}

{$I+}

Właśnie one odpowiednio wyłączają / włączają zgłaszanie błędów w programie :slight_smile: ioresult właśnie zawiera ostatnio zwrócony błąd


(Lexander) #7

myślałem że wszystko co jest w znacznikach { } było nie istotne dla kompilatora. Dzięki :]