{ File: listerwe.pas } { Scopo: operazioni su liste collegate semplici: - lettura da file e stampa su file, assumendo che un elemento possa essere letto e scritto usando direttamente readln e writeln } { Richiede le seguenti definizioni preliminari e assume che elementi di tipo TipoElemLista possano essere letti e stampati con read e write. type TipoElemLista = ...; TipoLista = ^TipoRecordLista; TipoRecordLista = record info : TipoElemLista; next : TipoLista end; } procedure LeggiLista (nomefile: string; var lis: TipoLista); { Restituisce in lis una lista i cui elementi vengono letti dal file di nome nomefile, uno per riga. L'ordine degli elementi nella lista e` lo stesso che nel file. } var paux : TipoLista; datafile : Text; begin assign(datafile, nomefile); reset(datafile); new(lis); paux := lis; while (not eof(datafile)) do begin new(paux^.next); paux := paux^.next; readln(datafile, paux^.info) end; paux^.next := NIL; paux := lis; lis := lis^.next; dispose(paux); close(datafile) end; { LeggiLista } procedure ScriviLista (nomefile: string; lis: TipoLista); { Scrive gli elementi della lista lis sul file di nome nomefile, uno per riga. Il precedente contenuto del file va perduto. } var datafile : Text; begin assign(datafile, nomefile); { associazione tra file logico e file fisico } rewrite(datafile); { apertura del file in scrittura e posizionamento all'inizio } while lis <> NIL do begin writeln(datafile, lis^.info); lis := lis^.next end; close(datafile) { chiusura del file } end; { ScriviLista }