Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Subor;
- uses crt;
- const NazovSuboru='data.dat';
- max=10;
- type PTovar=^TTovar;
- TTovar = object
- private
- id:integer;
- nazov:string[20];
- popis:string[30];
- vyrobca:string[10];
- public
- constructor Init;
- destructor Done;
- procedure Info; virtual;
- function Typ:char; virtual;
- end;
- PPamat=^TPamat;
- TPamat = object(TTovar)
- private
- kapacita:real; { GB }
- public
- constructor Init;
- destructor Done;
- procedure Info; virtual;
- function Typ:char; virtual;
- end;
- PHdd = ^THdd;
- THdd = object(TPamat)
- private
- otacky:integer;
- pocetPlatni:byte;
- public
- constructor Init;
- constructor InitNastav(_id:integer;_nazov,_popis,_vyrobca:string;_kapacita:real;_otacky:integer;_pocetPlatni:byte);
- constructor InitCopy(polozka:THdd);
- destructor Done;
- procedure Info; virtual;
- function Typ:char; virtual;
- end;
- constructor TTovar.Init;
- begin
- id:=1;
- nazov:='';
- popis:='';
- vyrobca:='';
- end;
- destructor TTovar.Done;
- begin
- end;
- constructor TPamat.Init;
- begin
- inherited Init;
- kapacita:=0;
- end;
- destructor TPamat.Done;
- begin
- end;
- constructor THdd.Init;
- begin
- inherited Init;
- otacky:=0;
- pocetPlatni:=0;
- end;
- constructor THdd.InitNastav(_id:integer;_nazov,_popis,_vyrobca:string;_kapacita:real;_otacky:integer;_pocetPlatni:byte);
- begin
- self.Init;
- self.id:=_id;
- self.nazov:=_nazov;
- self.popis:=_popis;
- self.vyrobca:=_vyrobca;
- self.kapacita:=_kapacita;
- self.otacky:=_otacky;
- self.pocetPlatni:=_pocetPlatni;
- end;
- constructor THdd.InitCopy(polozka:THdd);
- begin
- self.Init;
- self.id:=polozka.id;
- self.nazov:=polozka.nazov;
- self.popis:=polozka.popis;
- self.vyrobca:=polozka.vyrobca;
- self.kapacita:=polozka.kapacita;
- self.otacky:=polozka.otacky;
- self.pocetPlatni:=polozka.pocetPlatni;
- end;
- destructor THdd.Done;
- begin
- end;
- procedure TTovar.Info;
- begin
- writeln('Tovar id: ',self.id,', nazov: ',self.nazov);
- end;
- procedure TPamat.Info;
- begin
- writeln('Pamat id: ',self.id,', nazov: ',self.nazov);
- end;
- procedure THdd.Info;
- begin
- writeln('Hdd id: ',self.id,', nazov: ',self.nazov);
- end;
- function TTovar.Typ:char;
- begin
- Typ:='t';
- end;
- function TPamat.Typ:char;
- begin
- Typ:='p';
- end;
- function THdd.Typ:char;
- begin
- Typ:='h';
- end;
- procedure Load(var polozky:array of PTovar);
- var i:byte;
- f:file;
- hh:THdd;
- moznost:char;
- h:PHdd;
- begin
- for i:=0 to max do polozky[i]:=nil;
- FileMode:=0;
- assign(f,NazovSuboru);
- {$i-}
- reset(f,1);
- {$i+}
- if ioresult<>0 then rewrite(f,1);
- i:=0;
- writeln('Nacitavam data');
- hh.Init;
- while not eof(f) do begin
- blockread(f,moznost,sizeof(moznost));
- case moznost of
- 'h': begin
- blockread(f,hh,SizeOf(hh));
- New(h,InitCopy(hh));
- polozky[i]:=h;
- inc(i);
- end;
- { 'k': begin
- blockread(f,kk,SizeOf(kk));
- New(k,InitCopy(kk));
- polozky[i]:=k;
- inc(i);
- end;}
- end;
- end;
- close(f);
- end;
- procedure Add(var polozky:array of PTovar;moznost:char);
- var h:PHdd;
- i,j:byte;
- _id:integer;
- _nazov,_popis,_vyrobca:string;
- _kapacita:real;
- _otacky:integer;
- _pocetPlatni:byte;
- begin
- for j:=0 to max do
- if polozky[j]=nil then begin
- i:=j;
- break;
- end;
- case moznost of
- 'h': begin
- writeln('Zadaj Hdd: ');
- write('id: ');
- readln(_id);
- write('nazov: ');
- readln(_nazov);
- write('popis: ');
- readln(_popis);
- write('vyrobca: ');
- readln(_vyrobca);
- write('kapacita: ');
- readln(_kapacita);
- write('otacky: ');
- readln(_otacky);
- write('pocet platni: ');
- readln(_pocetPlatni);
- New(h,InitNastav(_id,_nazov,_popis,_vyrobca,_kapacita,_otacky,_pocetPlatni));
- polozky[i]:=h;
- //Dispose(h,Done);
- end;
- { 'k': begin
- writeln('Zadaj kruh: ');
- write('x: ');
- readln(x);
- write('y: ');
- readln(y);
- write('r: ');
- readln(r);
- New(k,InitNastav(x,y,r));
- polozky[i]:=k;
- end;}
- end;
- end;
- procedure Save(var polozky:array of PTovar);
- var j:byte;
- moznost:char;
- f:file;
- begin
- FileMode:=1;
- assign(f,NazovSuboru);
- rewrite(f,1);
- for j:=0 to max do begin
- if polozky[j]<>nil then begin
- moznost:=polozky[j]^.Typ;
- polozky[j]^.Info;
- writeln('velkost moznosti: ',SizeOf(moznost));
- writeln('velkost polozky: ',SizeOf(polozky[j]^));
- blockwrite(f,moznost,SizeOf(moznost));
- blockwrite(f,polozky[j]^,SizeOf(polozky[j]^));
- end;
- end;
- close(f);
- end;
- Procedure Remove(var polozky:array of PTovar);
- var i,j:byte;
- begin
- write('Ktoru polozku chcete odstranit? ');
- readln(i);
- for j:=i-1 to max-2 do
- polozky[j]:=polozky[j+1];
- end;
- Procedure Edit(var polozky:array of PTovar);
- var i:byte;
- h:PHdd;
- moznost:char;
- _id:integer;
- _nazov,_popis,_vyrobca:string;
- _kapacita:real;
- _otacky:integer;
- _pocetPlatni:byte;
- begin
- write('Ktoru polozku chcete editovat? ');
- readln(i);
- i:=i-1;
- moznost:=polozky[i]^.Typ;
- case moznost of
- 'h': begin
- writeln('Zadaj HDD');
- write('id: ');
- readln(_id);
- write('nazov: ');
- readln(_nazov);
- write('popis: ');
- readln(_popis);
- write('vyrobca: ');
- readln(_vyrobca);
- write('kapacita: ');
- readln(_kapacita);
- write('otacky: ');
- readln(_otacky);
- write('pocet platni: ');
- readln(_pocetPlatni);
- New(h,InitNastav(_id,_nazov,_popis,_vyrobca,_kapacita,_otacky,_pocetPlatni));
- polozky[i]:=h;
- end;
- { 'k': begin
- writeln('Zadaj kruh: ');
- write('x: ');
- readln(x);
- write('y: ');
- readln(y);
- write('r: ');
- readln(r);
- New(k,InitNastav(x,y,r));
- polozky[i]:=k;
- end;}
- end;
- end;
- var polozky:array[0..max] of PTovar;
- i,j:byte;
- moznost:char;
- begin
- //okno(1,1,79,24,'f1','podpis',BLUE);
- for i:=0 to max do polozky[i]:=nil;
- repeat
- clrscr;
- writeln('1 Nacitat data zo suboru');
- writeln('2 Pridat novy HDD');
- { writeln('3 Pridat novy kruh');}
- writeln('4 Zobrazit data');
- writeln('5 Uprava polozky');
- writeln('6 Odstranenie polozky');
- writeln('7 Ulozit zmeny do suboru');
- writeln('ESC ukoncit');
- moznost:=readkey;
- writeln;
- case moznost of
- '1': Load(polozky);
- '2': Add(polozky,'h');
- {'3': Add(polozky,'k');}
- '4': begin
- for j:=0 to max do
- if polozky[j]<>nil
- then polozky[j]^.Info;
- end;
- '5': Edit(polozky);
- '6': Remove(polozky);
- '7': Save(polozky);
- end;
- repeat until keypressed;
- until moznost=#27;
- for j:=0 to max do if polozky[j]<>nil then Dispose(polozky[j],Done);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement