Práca s dátovým súborom file of, zápis, čítanie, editácia, pascal
Delphi & Pascal (česká wiki)
Kategorija: Programy zos Pascalu
Program: Datanka.pas
Subor exe: Datanka.exe
Subor ubuntu: Datanka
Mušiš mac: Obyvatel.dat
Program: Datanka.pas
Subor exe: Datanka.exe
Subor ubuntu: Datanka
Mušiš mac: Obyvatel.dat
Program pracuje s dátovým súborom typu file of obyvatel. Slúži ako učebnicový príklad pre prácu s dátovými súbormi. Názorne ukazuje ako sa do súboru zapisuje, ale hlavne ako sa z neho číta a vyhľadáva v ňom.
{ DATANKA.PAS Copyright (c) TrSek alias Zdeno Sekerak } { Program pracuje s datovym suborom typu file of obyvatel. } { Program ukazuje ako sa z takehoto suboru cita alebo don zapisuje. } { } { Datum:02.09.1995 http://www.trsek.com } program Databanka_file; uses crt,dos; type obyvatel=record { Definovana struktura obyvatel } meno:string[20]; priezvisko:string[35]; cislo:integer; end; var obyv:obyvatel; { premenna obyv je typu obyvatel } f:file of obyvatel; { subor z ktoreho sa bude citat je typu obyvatel } meno:string; { meno suboru s ktorym sa pracuje } ch:char; { kvoli zisteniu aka bola klavesa stlacena } procedure zapis( meno: string ); { vstupuje meno suboru } var i:integer; { pouzita lokalna premenna na pocet viet } begin writeln('Zapis do suboru ',meno); assign(f,meno); {$F-} { zakaz DOSu vypisovat chybove hlasky } rewrite(f); {$F+} { povol DOSu vypisovat chyby ak nastanu } if ioresult<>0 then begin { nastala chyba pri vytvarani suboru } writeln('Nastala chyba ...'); exit; { ukonci svoju cinnost a vrat sa do hlavneho } repeat until keypressed; { cakacia slucka } end; i:=0; repeat i:=i+1; { precitaj meno ... , a zapis do suboru } write('Meno:');readln(obyv.meno); write('Priezvisko:');readln(obyv.priezvisko); write('cislo (-1 koniec):');readln(obyv.cislo); if (obyv.cislo<>-1) then write(f,obyv); until (obyv.cislo=-1); { opakuj az pokial nezada cislo -1 } close(f); end; procedure citaj( meno: string ); { vstupuje meno suboru s ktorym sa pracuje } var i,poc: integer; max: longint; begin writeln('Citanie zo suboru ',meno); assign(f,meno); {$F-} reset(f); {$F+} if ioresult<>0 then begin writeln('Nastala chyba ...'); exit; repeat until keypressed; { cakacia slucka } end; i:=0; repeat writeln; write('Zadaj polozku, ktoru mam precitat (-1 koniec):');readln(poc); max:=filesize(f); { zisti kolko je vsetkych viet } { pokracuj len ked chce spravnu vetu } if (poc>=0) and (poc<max) then begin seek(f,poc); read(f,obyv); writeln('Meno:',obyv.meno,' priezvisko:',obyv.priezvisko, ' cislo:',obyv.cislo); end { chcel vetu, ktora neexistuje } else writeln('Nemozno vybrat vetu.'); until (poc=-1); close(f); { uzavri subor } end; procedure zapis_citanie( meno: string); var i,poc: integer; max: longint; s: string; begin writeln('Citanie aj zapis do suboru ',meno); assign(f,meno); {$F-} reset(f); {$F+} if ioresult<>0 then begin writeln('Nastala chyba ...'); exit; repeat until keypressed; { cakacia slucka } end; i:=0; repeat writeln; write('Zadaj polozku, ktoru mam precitat (-1 koniec):');readln(poc); max:=filesize(f); if (poc>=0) and (poc<max) then begin seek(f,poc); read(f,obyv); writeln('Meno:',obyv.meno,' priezvisko:',obyv.priezvisko, ' cislo:',obyv.cislo); { rozhodol sa modifikovat udaje } write('Prepisat [a/n] ???');readln(s); if (UpCase(s[1])='A') then begin { precitaj nove udaje } write('Meno:');readln(obyv.meno); write('Priezvisko:');readln(obyv.priezvisko); write('cislo:');readln(obyv.cislo); seek(f,poc); { nastav poziciu v subore } write(f,obyv); { zapis na nastavenu poziciu } end; end else writeln('Nemozno vybrat vetu.'); until (poc=-1); close(f); end; begin meno:='obyvatel.dat'; { default meno suboru } repeat clrscr; writeln('Program urceny na ucebne ucely ITAS Presov 1995'); writeln(' Software by TRSEK'); writeln('-------------------------------------------------------------------'); writeln('Menu:'); writeln(' 1. Zapis do suboru.'); writeln(' 2. Citanie zo suboru.'); writeln(' 3. Databanka citanie + opravy.'); writeln(' 4. Meno suboru:', meno); writeln(' 5. Koniec.'); ch:=readkey; { v ch znak klavesnice, aky si vybral } case (ch) of '1':zapis(meno); '2':citaj(meno); '3':zapis_citanie(meno); '4':begin write('Meno suboru je:',meno,' zmenit na :');readln(meno); end; end; until (ch='5'); { skonci volbou 5 } clrscr; { nezadubnut zmazat obrazovku } end.