{ File: fileint2.pas } program FileInteri2; { Produce un file text contenente una sequenza di interi inserita in input (terminando con 0). Il nome del file da produrre viene fornito in input e letto mediante una variabile stringa. Infine si chiede il nome di un file da stampare: cosi' si puo' vedere la stampa sullo schermo del file appena prodotto. } type TipoNomeFile = string[12]; { Equivalente al tipo packed array [1..12] of char; il TurboPascal permette su variabili di questo tipo l'uso di read e readln (non sui packed array) } var emon : TipoNomeFile; { per leggere il nome dei file coinvolti } procedure CreaFile (nome: TipoNomeFile); { Produce un file text immettendovi interi letti in input terminati con 0. Il nome del file da creare e' passato per parametro. } var f : text; n : integer; begin { CreaFile } { assegnazione e apertura in scrittura; il nome del file concreto e' quello passato per parametro } assign(f, nome); rewrite(f); { lettura dati da input con immissione nel file (i numeri vengono distanziati da uno spazio bianco) } repeat write(' intero? '); readln(n); { se il numero letto e' zero, abbiamo finito e non memorizziamo lo zero nel file } if n <> 0 then begin writeln(f); write(f, n) end until n=0; { messaggio di fine operazione e chiusura file } writeln('creato file ', nome); close(f); writeln end; { CreaFile } { N.B. Nell'istruzione "if n<>0" precedente, provare a vedere cosa succede nel programma se si usa semplicemente "writeln(f,n)" invece delle due istruzioni di stampa (Suggerimento: se c'e' un EOLN in fondo al file, subito prima di EOF, il file non e' ancora finito dopo la lettura dell'ultimo intero che il file contiene). } procedure StampaFile (nome: TipoNomeFile); { Stampa un file text il cui nome e' passato per parametro. } var f : text; n : integer; begin { assegnazione e apertura in lettura; il nome del file concreto e' quello passato per parametro } assign(f, nome); reset(f); { lettura dal file e stampa su video } while not (eof(f)) do begin read(f, n); writeln(n); end; { chiusura del file usato } close(f); end; { StampaFile } begin { FileInteri2 } write('dammi il nome di un file in cui vuoi memorizzare interi:'); readln(emon) writeln('dati da immettere in ', emon, ' ( 0 per finire ) : '); CreaFile(emon); write('dammi il nome di un file che vuoi ti visualizzi in output:'); readln(emon); StampaFile(emon); writeln('<RET> per finire'); readln end. { FileInteri2 }