Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
{ REDEF.PAS                 Copyright (c) TrSek alias Zdeno Sekerak }
{ Unit urceny pre redefiniciu databaz pri zmene verzie programu.    }
{ Precita stare rozlozenie DB a ulozi do noveho formatu.            }
{                                                                   }
{ Datum:19.06.1995                            http://www.trsek.com  }
 
procedure redef;
const pdsubor='zaluzie.$$$';
var fza1,fza2:file of tzaluz;
    zaluz:tzaluz;
    i,pp,por,zac:word;
    dd:double;
    ff:file;
begin
 prikaz('del '+subor+k_index);
 assign(fza1,dsubor);
 ReSet(fza1);
 assign(fza2,pdsubor);
 ReWrite(fza2);
 zac:=1;
 
 okno(1,1,80,24,' Redefinicia databazi ',' ESC-Zrus ',pozalu);
 Assign(ff,dsubor);
 opendbase(subor);
 i:=view_frm(subor);
 
 for i:=1 to spoc do begin
   cit_vety(subor,i);
   quick_view_all(dd,dd,FALSE);
   por:=vali(base[realy_find('ZALUZIA')]);
   hlaska('REDEF Veta >:'+stri(i,3)+'  z celkov,ho po>tu:'+stri(spoc,3)+
         '. Percentu lne:'+stri(round(100*(i/spoc)),3)+'%',-1);
 
   if por<>0 then begin
      pp:=realy_find('ZALUZIA');
      base[realy_find('ZALUZIA')]:=stri(zac,hlavy[realy_find('ZALUZIA')].size);
      zap_vety(subor,i);
      repeat
       seek(fza1,por);
       read(fza1,zaluz);
       seek(fza2,zac);
       if zaluz.pred<>0 then zaluz.pred:=zac-1;
       por:=zaluz.zani;inc(zac);
       if zaluz.zani<>0 then zaluz.zani:=zac;
       write(fza2,zaluz);
      until (por=0);
     end;
 
   end;
 
 close(fza1);
 close(fza2);
 prikaz('copy '+pdsubor+' '+dsubor);
 prikaz('del '+pdsubor);
 hlaska('',-1);
end;