{ File: invinp3.pas } program InversioneInput3; { Come InversioneInput2. In questa soluzione la stringa da stampare al contrario si legge da un file testo. Il nome del file e' una costante stringa. La procedura InvertiInput3 riceve anche un parametro file, dal quale leggere la stringa. Si metta un breakpoint in corrispondenza della istruzione lung := numCar. In questo modo se si lancia il programma , questo si fermera` dopo aver letto tutti i caratteri (e aver lanciato tutte le chiamate ricorsive per invertiInput3 - vedi in CALL STACK) } const NomeFile = 'filedati.dat'; var filein : text; lunghezza : integer; procedure InvertiInput3 (var f: text; numCar: integer; var lung : integer); var ch : char; begin if not eof(f) then begin read(f, ch); if ch <> '.' then InvertiInput3(f, numCar + 1, lung) else lung := numCar; write(ch) end end; { InvertiInput3 } begin { InversioneInput3 } { apertura del file in lettura } assign(filein, NomeFile); reset(filein); { inversione della prima stringa nel file } writeln('stampo al contrario la stringa nel file'); InvertiInput3(filein, 0, lunghezza); writeln; writeln('la lunghezza della stringa, escluso il ''.'', e'' ', lunghezza:2); close(filein); end. { InversioneInput3 }