PROGRAM ZatitzailePropioak_FitxategiaSortu ; USES Crt, SysUtils ; CONST MAX_ZATITZAILEAK = 50 ; TYPE DM_Zatitzaileak = ARRAY [1..MAX_ZATITZAILEAK] OF Integer ; DM_Kate75 = String [75] ; DM_Fitxa = RECORD Zenbakia : Integer ; Deskonposaketa : DM_Zatitzaileak ; ZatitzaileKopura : Integer ; Mota : DM_Kate75 ; END ; DM_Fitxategi = FILE OF DM_Fitxa ; PROCEDURE FitxaBatErakutsi (CONST Fitxa : DM_Fitxa) ; BEGIN WITH Fitxa DO BEGIN WriteLn ('Zenbakia: ', Zenbakia) ; WriteLn ('Mota: --->', Mota, '<---') ; END ; END ; PROCEDURE FitxategiBatIkusi (FitxIzen : DM_Kate75) ; VAR F : DM_Fitxategi ; Elem : DM_Fitxa ; Itxoin : Char ; BEGIN WriteLn (FitxIzen, ' fitxategiaren hasiera ----------------------------') ; Assign (F, FitxIzen) ; Reset (F) ; WHILE Not EOF(F) DO BEGIN Read (F, Elem) ; WriteLn (Filepos(F), '. elementua___________________________________') ; FitxaBatErakutsi (Elem) ; Itxoin := ReadKey ; END ; Close (F) ; WriteLn (FitxIzen, ' fitxategiaren amaiera ----------------------------') ; Itxoin := ReadKey ; END ; PROCEDURE FitxategiBatSortu (FitxIzen : DM_Kate75) ; VAR F : DM_Fitxategi ; Elem : DM_Fitxa ; Erantzuna : Char ; BEGIN Assign (F, FitxIzen) ; Rewrite (F) ; REPEAT REPEAT Write ('Zenbaki osoa eta positiboa eman: ') ; ReadLn (Elem.Zenbakia) ; UNTIL Elem.Zenbakia > 0 ; Elem.ZatitzaileKopura := 0 ; Elem.Mota := '' ; Write (f, Elem) ; REPEAT Write ('Zenbaki gehiagorik (B/E)? ') ; ReadLn (Erantzuna) ; Erantzuna := UpCase (Erantzuna) ; UNTIL (Erantzuna='B') OR (Erantzuna='E') ; UNTIL Erantzuna = 'E' ; Close (F) ; END ; VAR sFitxIzen : DM_Kate75 ; BEGIN Write ('Sortuko den fitxategiaren izena eman (adibidez: osoak.dat): ') ; ReadLn (sFitxIzen) ; sFitxIzen := 'C:\' + sFitxIzen ; { diskoaren toki jakin batean gorde dezan } FitxategiBatSortu (sFitxIzen) ; WriteLn ('Hona hemen fitxategiaren edukia: ') ; FitxategiBatIkusi (sFitxIzen) ; END.