[FreePascal]Nie kompiluje sie gdy użyję extended lub real

Gdy jako typ wpiszę integer, longint to kompiluje sie. Nie kompiluje sie jednak gdy wpiszę extended lub real.

Błąd jest taki:

a.pas(10,13) Error: Ordinal expression expected

a.pas(16,4) Fatal: There were 1 errors compiling module, stopping

a.pas(0) Fatal: Compilation aborted

Kod:

uses crt;

var liczba,wynik,licznik:real;


begin

wynik:=1;

clrscr;

writeln('PROGRAM');

writeln;

write('podaj liczbę: ');

readln(liczba);

        for licznik:=1 to liczba do

        begin

                wynik:=wynik*licznik;

        end;

        writeln('wynik: ',wynik);


end.

Dlaczego nie kompiluje sie z tymi typami? P.S. Taki kod kompiluje sie z extended i real bez problemu:

uses crt;

var liczba,wynik,licznik:extended;


begin

liczba:=5;

wynik:=3;

licznik:=2;

writeln(liczba+wynik+licznik:2:1);


end.

Zmienna dla for musi być zmienną całkowitoliczbowa.

Gdy zmienię zmienną ‘licznik’ na integer to dalej jest problem ze skompilowaniem. Chyba zmienną ‘liczba’ też trzeba zmienić.

Jako granice zmiennej pętli muszą być podane wartości całkowite, więc albo liczba też całkowita albo:

for licznik:=1 to trunc(liczba) do

zamiast trunc dowolna funkcja która zaokrągla w ten czy inny sposób i zwraca wartość całkowitą.