{ File: somfile.pas }

{ Scopo: lettura da un file di testo che contiene numeri interi }

program SommaInteriDaFile;
{ Stampa la somma dei numeri interi contenuti in un file di testo,
  e il loro numero.
  Calcola correttamente il numero di interi solo se nel file di input,
  dopo l'ultimo intero NON CI SONO spazi o CR.
}

var
  dato,                  { dato letto di volta in volta }
  quanti,                { numero di dati letti }
  somma     : integer;   { somma dei dati letti }
  fileinput : text;

begin
  assign(fileinput, 'INTERI.TXT');
  reset(fileinput);

  somma := 0;
  quanti := 0;
  while not eof(fileinput) do
  { ATTENZIONE: Calcola correttamente il numero di interi solo se
    nel file di input, dopo l'ultimo intero NON CI SONO spazi o CR.
    In caso contrario, NON rileva immediatamente l'EOF, ed esegue
    un'iterazione in piu'. }
  begin
    read(fileinput, dato);
    somma := somma + dato;
    quanti := quanti + 1
  end;

  close(fileinput);

  writeln('Ho letto ', quanti, ' dati.');
  writeln('La somma dei dati vale ', somma)
end. { SommaInteriDaFile }