Program je urèen pro evidenci aut ve firmì

Delphi & Pascal (èeská wiki)
Pøejít na: navigace, hledání
Kategórie: Programy v Pascalu
auto.pngProgram: Auto.pas
Soubor exe: Auto.exe
Potøebné: Cisel.pasAuta.datSpz.cis

Program je urèen pro evidenci aut ve firmì. Eviduje ©PZ auta, spotrìbu, poèet naje¾dených kilometrù, datum generální opravy. Program doká¾e generovat grafy. Pro ukládaní dát pou¾íva ¹trukturu vytvorìnou za pomoci type.
{ CISEL.PAS                 Copyright (c) TrSek alias Zdeno Sekerak }
{ Obsahuje funkcie a procedury pre program AUTO.PAS.                }
{ Blizsie informacie v AUTO.PAS.                                    }
{                                                                   }
{ Datum:18.03.1998                             http://www.trsek.com }
 
function ciselnik(vyber:boolean):integer;
var cislo,poc,i,i2,ir:integer;
      ch:char;
      uz:boolean;
begin
 textbackground(DARKGRAY);
 textcolor(YELLOW);
 okno(10,5,48,21,' Ciselnik SPZ ',' olvadanie:Enter,sipky, ESC-koniec ',GREEN);
 textbackground(DARKGRAY);
 assign(fc1,'spz.cis');
 {$I-}
 reset(fc1);
 {$I+}
 if (Ioresult<>0) then begin
     rewrite(fc1);
     end;
 poc:=1;
 while ( (poc<FileSize(fc1)) or not(Eof(fc1)) ) do begin
  seek(fc1,poc);
  read(fc1,cisel);
  if (poc<15) then begin
     gotoxy(2,poc);write(cisel.typ:3,' - ',cisel.popis);
     end;
  poc:=poc+1;
  end;
 
 i:=1;ir:=0;
 if (i=poc) then begin
     cisel.typ:=tival(copy('                              ',1,3));
     cisel.popis:=copy('                              ',1,SizeOf(cisel.popis));
     cisel.del:=false;
     end
    else begin
     seek(fc1,i+ir);read(fc1,cisel);
     end;
 textbackground(BLUE);
 textcolor(YELLOW);
 gotoxy(2,i);write(cisel.typ:3,' - ',cisel.popis);
 
 repeat
  ch:=readkey;
  if ((ch=#13) or (ch in ['0'..'9'])) then begin
    if vyber then cislo:=cisel.typ
    else begin
    repeat
     if(ch=#13) then cisel.typ:=tival(tread(2,i,3,tistr(cisel.typ),#0,#0))
                else cisel.typ:=tival(tread(2,i,3,'',ch,ch));
     textcolor(YELLOW);
     if (cisel.typ=0) then hlaska(12,21,' Nulove cislo neberiem. ');
     uz:=false;
     for i2:=1 to poc-1 do begin
         seek(fc1,i2);read(fc1,pcisel);
         if ((pcisel.typ=cisel.typ) and (i<>i2)) then uz:=true;
         end;
     if uz then hlaska(12,21,' Uz take cislo mas !!! ');
     textcolor(WHITE);
     gotoxy(2,i);
     window(11,6,69,20);
    until ( not(uz) and (cisel.typ<>0));
     cisel.popis:=tread(8,i,SizeOf(cisel.popis)-2,cisel.popis,#0,#0);
     seek(fc1,i+ir);write(fc1,cisel);
   ch:=' ';
   end;
  end;
 
  if (ch=#0) then begin
     ch:=readkey;
     textbackground(DARKGRAY);
     textcolor(YELLOW);
     gotoxy(2,i);write(cisel.typ:3,' - ',cisel.popis);
     case (ch) of
      #83:begin
           cisel.del:=true;
           if( cisel.typ > 0) then
               cisel.typ:=(-1)*cisel.typ;
           hlaska(11,21,' Polozka je oznacena ako zrusena.  ');
           window(11,6,69,20);
           seek(fc1,i+ir);write(fc1,cisel);
          end;
      #72:begin
           i:=i-1;
           if (i<1) then begin
              i:=1;ir:=ir-1;
              if (ir<0) then ir:=0
                        else begin gotoxy(1,1);insline;
                                   gotoxy(1,15);delline;end;
              end;
          end;
      #80:begin
           i:=i+1;
           if ((i+ir)>FileSize(fc1)) then i:=i-1;
           if vyber and ((i+ir)>=FileSize(fc1)) then i:=i-1;
           if (i>14) then begin
              i:=14;ir:=ir+1;
              if ((ir+i)>FileSize(fc1)+1) then ir:=FileSize(fc1)-i+1
                                     else begin gotoxy(1,1);delline;end;
              end;
          end;
      end;
     end;
 
   if (ir+i<FileSize(fc1)) then begin
        seek(fc1,ir+i);
        read(fc1,cisel);
        end
       else
        if not(vyber) then
        begin
        cisel.typ:=tival(copy('                              ',1,3));
        cisel.popis:=copy('                              ',1,SizeOf(cisel.popis)-2);
        cisel.del:=false;
        end;
 
     textbackground(BLUE);
     textcolor(YELLOW);
     gotoxy(2,i);write(cisel.typ:3,' - ',cisel.popis);
 until (ch in [#27,#13]);
 close(fc1);
 ciselnik:=cislo;
end;
 
procedure edit_aut(podmienka:boolean);
var poc,i,i2,ic,ir:integer;
      ch:char;
   kolko:byte;
      uz:boolean;
   v_sub:array[1..1000] of word;
cis_okna:integer;
begin
 textbackground(DARKGRAY);
 textcolor(YELLOW);
 if podmienka then
     okno(8,5,72,21,' SPZ       ³ Typ ³     Spotreba ³odjazdne od GO³ ostava do GO ',' Auta majuce do GO '+trstr(do_go)+' km ',
     GREEN)
    else
    okno(8,5,72,21,' SPZ       ³ Typ ³     Spotreba ³odjazdne od GO³ ostava do GO ',' ENTER-Zmen  DEL-Zrus ',GREEN);
 textbackground(DARKGRAY);
 assign(fa1,'auta.dat');
 {$I-}
 reset(fa1);
 {$I+}
 if (Ioresult<>0) then begin
     rewrite(fa1);
     end;
 for i:=1 to 1000 do v_sub[i]:=0;
 poc:=0;i:=1;
 while (not(Eof(fa1))) do begin
  poc:=poc+1;
  seek(fa1,poc-1);
  read(fa1,auto);
  if (not(podmienka) or (auto.do_go<=do_go)) and (i<15) then begin
      v_sub[i]:=poc;
      gotoxy(2,i);write(auto.SPZ,' ³ ',auto.typ:3,' ³ ',auto.p_spot:12:2,' ³ ',auto.od_go:12:2,' ³ ',auto.do_go:12:2);
      i:=i+1;
      end;
  end;
 poc:=filesize(fa1);
 
 if podmienka and (v_sub[1]=0) then begin
    hlaska(20,14,'Neda sa vybrat ziadne auto !!!');
    close(fa1);
    exit;
    end;
 ir:=0;y:=1;ic:=1;
 if (i=1) then begin
     auto.SPZ:='         ';
     auto.typ:=0;auto.p_spot:=0;auto.od_go:=0;auto.do_go:=0;
     auto.del:=false;
     end
    else begin
     i:=1;
     seek(fa1,v_sub[i+ir]-1);read(fa1,auto);
     end;
 
 textbackground(BLUE);
 textcolor(YELLOW);
 gotoxy( 2,i);write(auto.SPZ);
 
 repeat
  ch:=readkey;
  if ((ch=#13) or (ch in ['0'..'9','A'..'z'])) then
     if not(podmienka) then
     begin
     case (y) of
      1: auto.SPZ   :=tread(2,i,SizeOf(auto.SPZ)-1,auto.SPZ,ch,ch);
      2: begin
          window(1,1,80,24);
          cis_okna := get_window(10,5,70,21);
          auto.typ:=ciselnik(true);
          window(1,1,80,24);
          put_window(cis_okna,10,5,70,21);
          window(9,6,71,20);
          gotoxy(14,i);write(auto.typ:3);
         end;
      3: auto.p_spot:=trval(tread(20,i,12,'',ch,ch));
      4: auto.od_go :=trval(tread(35,i,12,'',ch,ch));
      5: auto.do_go :=trval(tread(50,i,12,'',ch,ch));
      end;
     y:=y+1;  if(y>5) then y:=1;
 
     if not(nemoze(auto)) then begin
        if (v_sub[i+ir]=0) then begin
           poc:=poc+1;
           v_sub[i+ir]:=poc;
           end;
        ic:=filesize(fa1);
        seek(fa1,v_sub[ir+i]-1);
        write(fa1,auto);
        close(fa1);reset(fa1);
        ic:=filesize(fa1);
        end;
     end;
 
 
  if (ch=#0) then begin
     ch:=readkey;
     textbackground(DARKGRAY);
     textcolor(YELLOW);
     gotoxy(2,i);write(auto.SPZ,' ³ ',auto.typ:3,' ³ ',auto.p_spot:12:2,' ³ ',auto.od_go:12:2,' ³ ',auto.do_go:12:2);
     case (y) of
        1: begin gotoxy( 2,i);write(auto.SPZ);end;
        2: begin gotoxy(14,i);write(auto.typ:3);end;
        3: begin gotoxy(20,i);write(auto.p_spot:12:2);end;
        4: begin gotoxy(35,i);write(auto.od_go:12:2);end;
        5: begin gotoxy(50,i);write(auto.do_go:12:2);end;
        end;
     case (ch) of
      #83:begin
           if not(auto.del) then begin
              auto.del:=true;
              auto.SPZ:='å'+copy(auto.SPZ,2,length(auto.SPZ)-1);
              hlaska(12,21,' Polozka je oznacena ako zrusena. ');
              seek(fa1,v_sub[i+ir]-1);write(fa1,auto);
              window(9,6,71,20);
             end;
          end;
      #75:begin
           y:=y-1;if (y<1) then y:=1;
          end;
      #77:begin
           y:=y+1;if (y>5) then y:=5;
          end;
      #72:begin
           i:=i-1;
           if (i<1) then begin
              i:=1;ir:=ir-1;
              if (ir<0) then ir:=0
                        else begin gotoxy(1,1);insline;
                                   gotoxy(1,15);delline;end;
              end;
          end;
      #80:begin
           i:=i+1;
           if ((i+ir)>poc) then if nemoze(auto) then i:=i-1;
           if podmienka and (v_sub[i+ir]=0) then i:=i-1;
           if (i>14) then begin
              i:=14;ir:=ir+1;
              if ((ir+i)>FileSize(fa1)+1) then ir:=FileSize(fa1)-i+1
                                     else begin gotoxy(1,1);delline;end;
              end;
           if ((i+ir)<>ic) then begin
              auto.SPZ:='         ';
              auto.typ:=0;auto.p_spot:=0;auto.do_go:=0;auto.od_go:=0;
              auto.del:=false;
             end;
          end;
      end;
     end;
 
   if (v_sub[ir+i]>0) then begin
        seek(fa1,v_sub[ir+i]-1);
        read(fa1,auto);
        end;
 
     ic:=i+ir;
     textbackground(DARKGRAY);
     textcolor(YELLOW);
     gotoxy(2,i);write(auto.SPZ,' ³ ',auto.typ:3,' ³ ',auto.p_spot:12:2,' ³ ',auto.od_go:12:2,' ³ ',auto.do_go:12:2);
     textbackground(BLUE);
     case (y) of
        1: begin gotoxy( 2,i);write(auto.SPZ);end;
        2: begin gotoxy(14,i);write(auto.typ:3);end;
        3: begin gotoxy(20,i);write(auto.p_spot:12:2);end;
        4: begin gotoxy(35,i);write(auto.od_go:12:2);end;
        5: begin gotoxy(50,i);write(auto.do_go:12:2);end;
        end;
 
     ic:=i+ir;
     if not(nemoze(auto)) then begin
        seek(fa1,v_sub[ir+i]-1);
        write(fa1,auto);
     end;
 until (ch in [#27]);
 close(fa1);
 filtruj_auta;
 
 { Chce to mat aj v textovom subore }
 if( podmienka ) then begin
  okno(5,10,75,15,' Zapis aut do TXT suboru ??? ','',BLUE);
  gotoxy(6,2);write('Zapisat vybrane auta do TXT suboru (A/..) :');
  meno_s:=tread(49,2,1,'A',#0,#0);
  if UpCase(meno_s[1])='A' then begin
     textbackground(BLUE);
     gotoxy(2,2);write('         Zadaj meno TXT suboru:                 ');
     meno_s:=tread(33,2,12,'noname00.txt',#0,#0);
     assign(fa1,'auta.dat');
     reset(fa1);
     assign(ftext,meno_s);
     rewrite(ftext);
     writeln(ftext,'ÕÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͸');
     writeln(ftext,'³ SPZ       ³ Typ ³     Spotreba ³odjazdne od GO³ ostava do GO   ³');
     writeln(ftext,'ÆÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵');
     i:=1;
     while (v_sub[i]<>0) do begin
        seek(fa1,v_sub[i]-1);read(fa1,auto);i:=i+1;
     writeln(ftext,'³ ',auto.SPZ,' ³ ',auto.typ:3,' ³ ',auto.p_spot:12:2,' ³ ',auto.od_go:12:2,' ³ ',auto.do_go:12:2,'   ³');
        end;
     writeln(ftext,'ÔÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;');
     close(fa1);
     close(ftext);
     end;
  end;
end;