home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / TTT405.ZIP / DIRTTT.PAS next >
Encoding:
Pascal/Delphi Source File  |  1988-07-17  |  16.5 KB  |  502 lines

  1. {S-,R-,V-,D-,T-}
  2. {\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}
  3. {         TechnoJocks Turbo Toolkit v4.05           Released: Jul 18, 1988    }
  4. {                                                                             }
  5. {         Module: DirTTT   --   a directory displying unit                    }
  6. {                                                                             }
  7. {                  Copyright R. D. Ainsbury (c) 1986-88                       }
  8. {\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}
  9.  
  10. Unit DirTTT;
  11.  
  12. Interface
  13.  
  14. Uses CRT, FastTTT, DOS, KeyTTT, WinTTT;
  15.  
  16. Function Display_Directory(var PathName:string; FileMask:string): string;
  17. Procedure Default_Settings;
  18.  
  19. Type
  20.    DirDisplay = record
  21.                      TopX    : byte;
  22.                      TopY    : Byte;
  23.                      Cols    : byte;
  24.                      Rows    : byte;
  25.                      DateTime: boolean;
  26.                      CDir    : boolean;
  27.                      Attrib  : byte;
  28.                      BoxType : byte;
  29.                      BoxCol  : byte;
  30.                      BacCol  : byte;
  31.                      NorCol  : byte;
  32.                      DirCol  : byte;
  33.                      HiFCol  : byte;
  34.                      HiBCol  : byte;
  35.                      AllowEsc : boolean;
  36.                  end;
  37.  
  38. Var
  39.    D : DirDisplay;
  40.  
  41. Implementation
  42.  
  43. Procedure Default_Settings;
  44. begin
  45.     With  D  do
  46.     begin
  47.         TopX    := 15;
  48.         TopY    := 5;
  49.         Cols    := 4;
  50.         Rows    := 15;
  51.         DateTime:= true;
  52.         CDir    := true;
  53.         AllowEsc := true;
  54.         Attrib := AnyFile;
  55.         BoxType := 1;      {single lined box}
  56.         If BaseOfScreen = $b000 then
  57.         begin
  58.             BoxCol := white;
  59.             BacCol := black;
  60.             NorCol := white;
  61.             DirCol := lightgray;
  62.             HiFcol := black;
  63.             HiBcol := lightgray;
  64.         end
  65.         else
  66.         begin
  67.             BoxCol := red;
  68.             BacCol := lightgray;
  69.             NorCol := black;
  70.             DirCol := yellow;
  71.             HiFcol := white;
  72.             HiBcol := blue;
  73.         end;
  74.     end; {with}
  75. end;
  76.  
  77. Function Display_Directory(var PathName:string; FileMask:string): string;
  78.  
  79. Const
  80. Mcols = 6;       {lower these settings to reduce the amount of}
  81. Mrows = 23;      {memory used - if necessary}
  82. Lchar = #16;
  83. Rchar = #17;
  84. Null  = #0;
  85. HomeKey = #199;   EndKey = #207;   Esc = #027;   Enter = #13;
  86. Cursup  = #200;   CursDown = #208; CursLeft = #203; CursRight = #205;
  87. PgDn    = #209;   PgUp     = #201;
  88.  
  89. Type
  90. Filerecord = record
  91.                Name : string[12];
  92.                Size : LongInt;
  93.                Time : LongInt;
  94.                Attr : byte;
  95.              end;
  96. DirBox =  array[1..Mcols,1..Mrows] of ^Filerecord;
  97. DirectoryData = record
  98.                    CurrEntry : byte;    { the number of the highlighted file }
  99.                    TotFiles  : byte;    { the total number of files in cur. box }
  100.                    CurrPage  : integer; { current directory page number}
  101.                    FileData  : DirBox;  { name and attrib info }
  102.                    MoreFiles : boolean; { true if not end of directory }
  103.                 end;
  104. Var
  105. Dbox : DirectoryData;        {array of files and attributes}
  106. X2 : byte;                   {right hand box coord}
  107. I,J : integer;               {misc}
  108.  
  109. {\\\\\\\\\\\\\\\\\\\\\\    Miscellaneous procedures   \\\\\\\\\\\\\\\\\\\\\}
  110.  
  111. FUNCTION Copies (ch:char; n:integer) : String;
  112. begin
  113. InLine (   $16 /$07 /$8B /$4E /$04 /$88 /$4E /$08 /$8B
  114.        /$46 /$06 /$8D /$7E /$09 /$FC /$F3 /$AA );
  115. end;  { Copies }
  116.  
  117.  
  118. Function Left(S : string;Size : byte; Pad : char):string;
  119. var temp : string;
  120. begin
  121.     Fillchar(Temp[1],Size,Pad);
  122.     Temp[0] := chr(Size);
  123.     If Length(S) <= Size then
  124.        Move(S[1],Temp[1],length(S))
  125.     else
  126.        Move(S[1],Temp[1],size);
  127.     Left := Temp;
  128. end;
  129.  
  130. Function Center(S : string;Size : byte; Pad : char):string;
  131. var
  132.   temp : string;
  133.   L : byte;
  134. begin
  135.     Fillchar(Temp[1],Size,Pad);
  136.     Temp[0] := chr(Size);
  137.     L := length(S);
  138.     If L <= Size then
  139.        Move(S[1],Temp[((Size - L) div 2) + 1],L)
  140.     else
  141.        Move(S[((L - Size) div 2) + 1],Temp[1],Size);
  142.     Center := temp;
  143. end; {center}
  144.  
  145. Function Int_to_Str(I : Longint):string;
  146. var S : string[11];
  147. begin
  148.     Str(I,S);
  149.     Int_to_Str := S;
  150. end;
  151.  
  152. Function CalcCol(Entry : byte) : byte;
  153. { returns the display column of the file}
  154. begin
  155.     CalcCol := Succ(Pred(Entry) MOD D.cols);
  156. end;
  157.  
  158. Function CalcRow(Entry : byte) : byte;
  159. { returns the display row of the file}
  160. begin
  161.     CalcRow := Pred(Entry + D.cols) DIV D.cols;
  162. end;
  163.  
  164. Function Subdirectory(Attrib:byte): boolean;
  165. begin
  166.     Subdirectory := ((Attrib and 16) = 16);
  167. end;
  168.  
  169. Function ValidPathName:Boolean;
  170. begin
  171.     If PathName[Length(PathName)] <> '\' then
  172.        PathName := PathName + '\';
  173.     {$I-}
  174.     If (length(PathName) = 3) and (PathName[2] = ':') then
  175.        Chdir(PathName)
  176.     else
  177.        ChDir(copy(Pathname,1,length(Pathname) - 1));
  178.     {$I+}
  179.     ValidPathName := (IoResult = 0);
  180. end;  {ValidPathName}
  181.  
  182. Function FileDetails(F:FileRecord):string;
  183. var
  184.   DT : DateTime;
  185.   Str: string;
  186. begin
  187.     UnPackTime(F.Time,DT);
  188.     Str := Int_to_Str(F.Size)+'  '
  189.            +Int_to_Str(DT.Month)+'-'+Int_to_Str(DT.Day)+'-'
  190.            +copy(Int_to_Str(DT.Year),3,2)
  191.            +'  '+Int_To_Str(DT.Hour)+':'+Int_to_Str(DT.Min);
  192.     FileDetails := Str;
  193. end;
  194.  
  195. Function ExtractPrevDir(Path : string): string;
  196. begin
  197.  Repeat
  198.   Delete(Path,length(Path),1);
  199.  Until ( copy(Path,length(Path),1) = '\') or (length(Path) = 0);
  200.  Delete(Path,length(Path),1);
  201.  If length(Path) > 2 then
  202.   ExtractPrevDir := Path0)string;string;sd d d;
  203.       ;
  204.       ;wswsw((L((L(FUFUFeft(chrchar(mp[mp[m '
  205. r r r                     TLef┬TITITY imto_Se -cur /$4 /$4 B B B;
  206. v;
  207. v;AnAnAed Xtra : byte;
  208. begin
  209.     If D.DateTime then
  210.        
  211.        
  212. ra := 1
  213.     else
  214.              a := 0;
  215.     If D.
  216.     IfTime and (D.cols < 4) then n ns := 4;ss.colsolso 1) or (D(D( 1)  > 6)  then D.cols := 6;
  217. := 0:= 0:Rows  or1)s   := 6 := 6 FUFxt (D> 23) then D. D. := 23 -  -  a;
  218.     If 1)sTopX a) o or1D.D.D > (79 - 6) *13)6;
  219. : en
  220. := 06)  =  6  (D>6  opXD.col else
  221.        
  222.        
  223. pX := 40  - ( 1)scolsp or1D+ 2 ) div 2*1 D. (D>6X aD.D*1 X := 1:= 1:3)6opY1)sRa;or or opY6  o(24 lse
  224. .1)sT- 4)))
  225.     IfT    If D.D.D 4) = 79cols.T
  226.     IfT := 12 )se
  227.        *1 Y := ( 23 .T
  228. 3 .- 6))
  229. p 26  o(6  o(6    Ilse
  230. .6  o(6 4- 4
  231. end; {Xt
  232. beer
  233.     If neDateoxime oc
  234.     elserned Xrocedure De -ce -cex := 1r
  235.   Y2,4): byte;
  236. begincols := 4ateTime then
  237.        3 .-:= 1 <
  238.        
  239.        
  240. = n n
  241.     X2 := .1FUF2 + 13*6) ;
  242.     6) ;=6) ;=6neY + 1FUF 23owsFUF4);
  243.     FBox:= 12 X,D,D,n n
  244. = n6) ;=6) ;=6boxcolcolcBacBacBD.Boxtype)chrcDeroc Dthen
  245.  Box
  246. beginc;re LoDisplayFileName(Entry :byte; DPage : DirectoryData);
  247. var C,Rn n
  248. 1,YYYColor X2  and agin
  249.     C := CalcCol(Entry);
  250.     RRRalcRow,Y);
  251.     X1n n
  252. = (D>6chrcDb+ (pX  *- 6Bred(C))oxi.D2 +e 3*      cRoe 3
  253.     IfT + *-+ls 
  254.     string;s
  255.        
  256.        
  257. := ime oime oi6  o(Subdirectory(Dpage.FileData[C,R]^.attr)*1 Y      ,Y)r :=0;
  258. ircol6) ;=6
  259.        Col);
  260.     X= D.NorColD.Bastwrite(.D2alcchrcDb+aolD
  261.     s
  262.     s
  263. rre LacCol),
  264.              ' '+left      ,age0;
  265. iileData
  266.        Co);
  267.     X=D.Nname,pX ,,,
  268.        
  269. edurnd; {var isplayn n
  270. 1ameyDtra re Hi C,laylaylme,Y :chrcDb+aCDor X : Director    C col6CalcCar ol)RRRage,col);
  271.     X byte;
  272.     text : string;
  273. begin
  274.     C- 6BrlcCol))o;
  275.     *-:= CalcRC)pX  ;
  276.     .D2tory( D.       c (
  277.     IfT +*-+pred(string;s
  278. );
  279.     := ( := iteolsos6  o(S     C,re La= n6FUFge.FileDa    a[               (2(Dp R.aubr)*ory(;
  280.     t {visplaledcol6ameyR= DNorCottr40n
  281.        := Cte(.:= 4irCololD
  282.                n n
  283. =HiFColoxior X6  o(6tFiles > D.D*ubr ba :        Te.D2t:= #16 + D,Y)rvar iirctan n
  284. =HColore H  ;  {place arrchrcDBat each end}
  285.         ce at := Left(Text,13,ector mFUF#17;
  286.         Fast'+lite(      ,acRo,0;
  287. iiritchrcDHiBCol),;
  288.     .t);
  289.         (2(4;D.
  290. re H        If Sub and ag*1 Y := 4ir :=0nd}6) ;=6
  291. lcColColoolD6  o(6t
  292.                  c              := ( h loen n
  293. 1an n
  294. 1antra rame = '..'              :             st' := 'enory '+ mp[m;
  295.       ;ewswr(Pathname)
  296.                ameyR                       a:=                   irectory                   i                  i e achirColame =    c;
  297.       ;eme;
  298.                ;
  299.                ;= CentercRo,0;
  300. iirX2-.1-= nector m;
  301.                If BaseOfScreen = $b000 )
  302.             ;
  303.         (t4;Dte(.1.FchrcDTopYYY0;
  304. iiD.HiBcol);
  305.     X=DcCname,Text    c;               ;
  306.                ;                name,xt e(               ;chrcDb+a- 4
  307. e( ttr(colo
  308.        Co)playFD.Nnl),st');
  309.  
  310.            endendelse   {must  ; a file
  311.         F      st'             OfS DenoFile        }
  312.      mp[m;.Name+'  '+
  313.                        FileDetails(D+ D,ector m;mp[m;);
  314.                ls(reenter $btroc )
  315.  neX;
  316.         (tlayl ' '           .1.aseTopY            ;Yen = $b00Color 1)  >roc )    F' 'lefende 1)  >r;
  317.                ;    {me0uschrcDb+a-iBDisp.BacClo
  318. st'  lo
  319. s),s               );
  320.  
  321. ),s ype),s y= n6mutr(s >ttr(nd}6
  322.        Co)pColooOfS nd;
  323. col6and <    {no  'es}
  324.     FileDetaFas,0'+li Cen = 'No File(s)'00C            ;t4lefe;
  325.          < D.
  326. rOfS l                nopY}
  327.     Fr(*1 Y : fil(col
  328.         F  Cen);
  329.     end;
  330. re Dol)Ror X yFileNamecol6C:= 4ae RRayDiror X(var '.tX2  cRo,0g;
  331. bta   C-r I : integer;
  332. begin
  333.     For or o= 1 to DenoTotfiles do
  334.         Dosplayage,e(I,I,I {vory(;(13131r :=0TotFiles > a;and (length(PathNaame = 6  o or1Dand D.Cdirastw     files=.CurrEntry := 2a :              ntry := 1;
  335.     cRo,0gPathNaa   C-ramelayl irColirColitry,Dor X);
  336. end; {ger;    C iror X AnA┬T Array filli /$4 +lData)es     }
  337.  
  338. B BCalcCae Readin
  339.     {vFoColo {vxt gin
  340.  Data; Newtex: byte);
  341. const
  342. ReadMessMewswrcondi /$4       a:ry...';
  343.  
  344. var
  345.   If SCounter X1  Msg : string;
  346.   I,J : integer;
  347.  
  348.      Xt: i RIf SCdi xtt
  349. geeadfiles=essMtory := C;
  350.      Const
  351.          CurrFile : SearchRec= (Fill:(0,,,ende                           Attr:0;TimeTimeT;SizezezName:'');
  352.      Va <
  353.        Firsvar iileMs : boolean;
  354.      t4l    FirstFileRIf SC := False;
  355.          with ill> a
  356.          
  357.          
  358.        TotFiles hen;
  359.              repeavar
  360.  ;
  361.       ;em                 FUF#.1.a red(Col(Succ(T(T(irct)),lo
  362. s                 := itw(Succ(files=.files=.f)= D do do   b;  {p                     if 
  363.     surrtex= 1) and = 1)hen;es Y +D.Nnl                     and not otFred(Cilerep             );
  364.     X=Dc               w(                   Findndn      ,aca :  .1-}
  365.     FreMaskchrcDAttrib,                      ile     t     t .1.a rchrcDArep:= True;
  366.                       end;
  367. t4l Name := ( :.1.a rc Filels(rameamea      AttrchrcDb+chrcDb+cile.AttrAttrA     Size Size SrrrrrSizeSizeSFasD.
  368. D.
  369. DrrrTimeTimeT   Name :darc      ,acAttrAle     S              if  (Name <> ',J              : es Y               otFrles := SnotaskcFilesFilesF         re D with }
  370.              until ( ( Attribf 1chrcDB*-+6)        *D.DDOSError = 1888   Morec(f;Siz;Siz;SSSror *-+618 ( ec;  {p S Fild; { Ms }
  371.  Rec=e }
  372.  
  373.  
  374. 1nin in iIf SCIf SCI  DDirecox
  375.              '(2(4    {nileN- 4
  376. Sub = n6m.Dubr ,0'lo
  377. Msuntessage);
  378.     ubr ,lo
  379. s a;a    end;
  380. tage,eTotf+ 2to Mco 1)                   :DOfor J     Il    Il 1)sT1)sT1st') := FNCharzezlen n
  381. 1aI,J= D, SizeOfOfO'+ s >ns >ns= D), 0);
  382.         if di       a:rMe orCurrPMe;
  383.                 end;
  384. t    C.1.a rc ry.or X
  385.             0); Co: i te(.2 +eto Pred(((Data)e             )DODOD       ss;
  386.          ge)ay flenFasDlenFge := rtc(c(cy :b
  387.             ,J  rD.
  388. DNo                 :=  :=   {v;
  389.         ;
  390.         ;chRB BC
  391. Refiles=);                   { : Sad c.1.a rc ent directory h Totf+     or X y    c; );
  392.  
  393. )lse Der               ;cnd}6
  394. oxCol), sor X();
  395.     X=Dc  left('
  396.         F  length( := FNCer Xlen,#205me,
  397.         If (2aathre H) + 1FUFlength(FileMask       * or 23o.T
  398.  (D>6;
  399.                 re D lo
  400. s)yFi) + NamecpYJ  tr(DFileMxCol       * e,pDO         ' : stringy '+-.+Filemaskter ')
  401.         e) dives Y athr               )6;
  402. : e  'ename,xname,xnr(Dr(Drk ayD'+li ,,,,,ileileisksks     SRea}                   { eft(';
  403.         {now add the mearz {vs}
  404.         xttgeewswrirectorsc-quit : intxCof ToT.C             )DPathNaa                   :=  :=  + ' $bt+),;),;)217ter to select 'olD6f Der CurrECurrEC       Mt
  405. gt
  406. gt PgUpUpU
  407.         If If SCIFiles 
  408.         e)di xdi xd:= If I '  PgDnDnD
  409.         = DN]^6;
  410. : e chrcDB+ 1= DN]0;
  411. ime oiD.D= DNsutex=cRo     SIf length(17t) <  asktNorCot D. ) <  Fes Y are H)meachrcDb+aIf Slength(FBoxCoe( twswrilo
  412. lo
  413. l;
  414.     e :c{ ubr ,}
  415. e}
  416. e}length( dage,eTubr ,l                     TL\\\\\\\\\\\\\\\\\\\  Cursor Movement Xt  'enAAnA}
  417. Function SeDnDchrcDA(Fi
  418.         I: D to := C:string;
  419. Col(EChS : char;
  420.  
  421.          CurrFdure Pcols :arzUp;
  422.          ;
  423.          ;hoice s dnteo
  424. := itww(            WitFUF#astw e  orC            B BC
  425. ;
  426.       Filme:Col(ECubr the   M &es}mbtra rFunc      or ok:snam),s y=   :=- 6)lo
  427. s lo
  428. ;     '
  429. t_tAA           .0.0.yFiyFiy2 )2 )2dPadPad 2ge.ge.g.D2t = 7 = 7 NNN;
  430.     e;
  431.     e; 'ididiYe00 )
  432.        
  433.        
  434. yryry*1 Y : : byte;
  435. = #209= #209=it  H H ) div) div)   : St^.me,es Y  es Y  eL)
  436. L)
  437. LJJJ   C   C lse Dlse Dl   :   : \\\\\\\\\\\\\\\\\\\\\    c; )BaBaB),;)7E7E7D /$I$I$e( te( teDTDTD(2(+Int+Int+) <) <)ck;FunctFunctF;
  438.         CursCursCt4lt4lt;     ;     ;LefLefL┬┬┬ 19 19  Haaa5;
  439. 5;
  440. 5astw e= #20= #20=;
  441.     e;
  442.     e;0;
  443. ix cx cxisisiununute(te(t := 2 Len Len e }e }eme me m└└└es  es  eletletltex=ctex=ctastw n
  444.     D D );
  445.    aaae( tI-I-I or1Danta   : BaPr{wßßßNeNeNn
  446.     8;8;8s)e ae ae BaP}
  447.  
  448. F}
  449.  
  450. F}: st╫╫╫e; e; e6;
  451. : e var iivar iiv orC h orC h }
  452.      m}
  453.      m}'+ sSize)+Size)+S,l,l, se Re Reááá :c :c 0;0;0 H H L)
  454. L)
  455. L the tX,X,X00 ):= 12 X:= 12 X:FaFaFs }s }sor X
  456.  H FUF#a;
  457.     e;;
  458.     e;;geewgeewg'0ΓΓΓ6;
  459. : e 6;
  460. : e 6: by: by:Long$Ió
  461. {
  462. {
  463. LopXolsolsotiotiotnta the he he hv 2*v 2*v);
  464.    .aution'  '  'gin
  465. gin
  466. gDon Cn Cnile  H '.tlo
  467. MchRB2ath i*1 
  468. C
  469. C
  470. Totf+ Totf+ T           Wtring;
  471. tring;
  472. tcRocRoccol6col6cend;
  473. end;
  474. e:= 12 XoR-}
  475. -}
  476. -lselsel    a
  477.        
  478.        
  479. S);S);Segin
  480. egin
  481. eegin
  482. egin
  483. eoRoRo└
  484.     If 
  485.     If 
  486. If SCIIf SCII.N.N.5;
  487. whiwhiw(0(0( := (<> <> <Γ;
  488.     e;;
  489.     e;;rororBa      Dalylylrr/$7/$7/ Ba,,Name+Name+N1)s1)s1er
  490. yte;eadeadecrcrcQh T
  491. b
  492. b
  493. lsecCalc
  494.     Ivar iilevar iilevcRo 3,               er
  495. essMessMelettribnsnsnirct)= n6molD6folD6foMe) div)) div))),s y=Int_teyeyenotah}h}hor X()     fidchrcDb+achrcDb+aceyg;
  496. }
  497. I}
  498. I}En}
  499.  
  500.  
  501. 1}
  502.  
  503.  
  504. 1}gth(gth(góóó6) ;=6
  505. r(Fr(Frte(te(tw(  w(  wCalc:= 1 := 1 :6) ;=6
  506. := Tr Co: Co: 0; 0; 0;
  507.                ;''        LeFunctFoRoRoFunctFoFunctFoFnotaessMeh}h}hM00 )s tto_Stto_Stt, K, K,CalcessM\\\\\\\\\\\}I,olD6folD6foCol               u             u irct)irct)iny }irCola a23 F23 F2ile '+ sS'+ sS'ring;
  508. ring;
  509. r) div)bdi D.D D.D  '
  510.  '
  511.  pl0,  : bre La=re La=ri;     ;;     ;;""");
  512.    D.CeMaegerNN Fe Fe '0'0'isisiHiBCyiyiyCge.ge.gououo6 +6 +6.C p : ardir ( e]^HiBC+l+l+23 F223 F22@er lt                      a                     a olD6fo Su Su EntrEntrE}
  513.  
  514.  
  515. }
  516.  
  517.  
  518. }t4Uto sto st= nJ=J=Jor X6li li lTem  Da0;
  519. ii0;
  520. ii0stria[ ::D.
  521. Dasasa- 6- 6-otFrchRBchRBcateTchrcDb+ac chrcDb+ac cMsunowenowenlo
  522. );
  523. vor X yor X yo;
  524.  
  525.  ;
  526.  
  527.  ;nota ( e](colInt_to) divovovowswriwswriwTopTopT    : TTT,TTT,ThNhNhName(Name(Nééék:sk:sk  : g;Col(ECítionCol(ECí < D < D .D2tú St^¢D-til= $   T Top\\\\\\\\\\\} $faS te(.2te(.2t
  528.  
  529. P
  530.  
  531. P
  532.  bo bo := lns..MpX  : by&ame =Calcols
  533.  
  534. Fu
  535.  
  536. Fu
  537. y}I,tr(y :=y :=y then
  538.  then
  539.  Lef                   R = 0)olsosolsosoath)'  ''  ''r(DZZZ }
  540.   }
  541.   Li
  542. beg 1)  >r $ $ Col(ECí 
  543.        C2 +ettru+Intσσσ           Wªªª  :   :  nuColor Color Cg
  544.         x
  545.         x
  546. ntntnEn} or1Dan or1Dan f PBD
  547.        C2'
  548.        C2'
  549.        et ot otisies   es   e.M.M.2)2)2X1;;
  550.     e;;
  551.     e;;X aD,,,,,ring;
  552. rring;
  553. rr:str\\\\0)isdi 
  554. I[1.rector6  o(S by by y :=echar(mchar(mcV-V-VtRRPgeewgeewgEn}En}EFileRI   {menuileDileDi:= 12 := 12 :6;
  555. : e v6;
  556. : e v6var ivar ivName Name Na;aa;aae( tee( tee2length(FBlength(FBlLef┬ := (<8B
  557. tory( tory( tName(+l A A Mcol6Ccol6Cck: := (<lay.CCalcoCalcoCre D lray[';';' : in : in ;
  558.                 ;
  559.                 ;y}I;y}I;yY +                  }
  560.  R }
  561.  R Fun or1Danime o1)sR);
  562. v or1Danie( twe( twe@@@chrcDb+aCchrcDb+aCcp[p[p(SizeRow();
  563.     X);
  564.     X)to to t A cond'
  565. '+
  566. l (l (l6) ;=6seOseOs'\')Path)Path)P;
  567.   );
  568.  D);
  569.  D)ººº'+ sS'+ sS'20202me:Circt)iirct)ii^.m^.m^*1 Y*1 Y*neYny (S[((S[((namenamenInt_to_plastasta,0'l ,0'l ,),s y=00C00C0sar :=0Tr :=0Tr- 6By} then
  570.  Der CDer CDFileMxFileMxF],],]nd;
  571. nd;
  572. nCalcRCCalcRCCrorrorr and ag*);
  573.