(* Dati due file, 'c:\primo.txt' e 'c:\secondo.txt', crearne un terzo, 'c:\somma.txt', risultante dalla fusione dei primi due: nel terzo file avremo cioe' prima tutte le righe del primo file e poi tutte quelle del secondo *) program fusione; var primo,secondo,somma: text; i:integer; procedi: boolean; conferma: char; nomeFile1,nomeFile2, nomeFile3, riga: string; (* restituisce true se il file esiste, false altrimenti *) function esiste(var f: text): boolean; var esito: boolean; begin reset(f); if IOResult=0 then begin close(f); esito:=true end else esito:=false; esiste:=esito end; begin nomeFile1:='c:\primo.txt'; assign(primo,nomeFile1); nomeFile2:='c:\secondo.txt'; assign(secondo,nomeFile2); nomeFile3:='c:\somma.txt'; assign(somma,nomeFile3); procedi:=true; if esiste(primo) then if esiste(secondo) then begin if esiste(somma) then begin writeln('il file ',nomeFile3, ' non e'' vuoto: confermi distruzione? (s/n)'); readln(conferma); procedi:=(conferma='s') or (conferma='S') end; if procedi then begin (* crea il file e lo apre o lo azzera e lo apre se gia' esisteva *) rewrite(somma); (* leggo riga per riga il primo e lo scrivo su somma *) while not eof(primo) do begin readln(primo, riga); writeln(somma,riga) end; (* leggo riga per riga il secondo e lo scrivo su somma *) while not eof(secondo) do begin readln(secondo, riga); writeln(somma,riga) end; close(somma);close(primo);close(secondo) end; end else begin writeln('Impossibile aprire ', nomeFile2); readln end else begin writeln('Impossibile aprire ', nomeFile1); readln end end.