home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 10 / dosfunc / dirdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-07-28  |  3.4 KB  |  79 lines

  1. PROGRAM DirDemo;
  2.  
  3. CONST
  4.   (*$I DIRCONST.PAS *)
  5. TYPE
  6.   (*$I DIRMTTYP.PAS *)                  (* bzw. DIRCPTYP.PAS fuer CP/M 3.0 *)
  7. VAR
  8.   (*$I DIRVAR.PAS *)
  9.   volume           : Dir_Rec;
  10.   suchspez, volname: Dir_Str;
  11.   sort, i          : INTEGER;
  12.  
  13. (*$I DIRMT.TUR *)    (* bzw. DIRMT.PSP fuer Atari, DIRCP.TUR fuer CP/M 3.0 *)
  14. (*$I DIRMTDTA.PAS *) (* bzw. DIRCPDTA.PAS fuer CP/M 3.0                    *)
  15. (*$I DIRLIB.PAS *)
  16. (* ----------------------------------------------------------------------- *)
  17. (*                     Directory seitenweise anzeigen:                     *)
  18. PROCEDURE ShowDir (volname: Dir_Str);
  19. VAR i, maske: INTEGER;
  20. BEGIN
  21.   i := 0;
  22.   WITH Directory DO
  23.     WHILE i < num DO BEGIN
  24.       i := Succ(i);
  25.       IF i MOD 22 = 1 THEN BEGIN
  26.         WriteLn;
  27.         WriteLn('Name     Typ','Groesse':15,'Datum':10,'Zeit':10,
  28.                 '  R H S V D B  Disk:',volname);
  29.                 (* R: read only, H: hidden, S: system, V: volume,
  30.                    D: directory, B: backup                       *)
  31.         WriteLn('-------- ---  -------------  --------  --------',
  32.                 '  -----------');
  33.       END;
  34.       WITH items[i] DO BEGIN
  35.         Write(name:8,' ',ext:3, size:15:0,'  ');
  36.         Write(Copy(date,7,2),'-',Copy(date,5,2),'-',Copy(date,3,2),'  ');
  37.         Write(Copy(time,1,2),':',Copy(time,3,2),':',Copy(time,5,2),' ');
  38.         maske := 1;                   (* die gesetzten Attribute anzeigen: *)
  39.         REPEAT
  40.           IF AndInt(attr,maske) <> 0 THEN Write(' *') ELSE Write('  ');
  41.           maske := maske * 2;
  42.         UNTIL maske > 32;
  43.         WriteLn;
  44.       END;
  45.       IF i MOD 22 = 0 THEN BEGIN
  46.         Write('Weiter -> RETURN ');  ReadLn;
  47.       END;
  48.     END;
  49.   IF i MOD 22 <> 0 THEN BEGIN
  50.      Write('Weiter -> RETURN ');  ReadLn;
  51.   END;
  52. END;
  53. (* ----------------------------------------------------------------------- *)
  54. BEGIN
  55.   NewDirDTA;                      (* DTA fuer Directory-Funktionen anlegen *)
  56.   sort := DirName; (* falls nicht anders angegeben,wird nach Name sortiert *)
  57.   WriteLn;    Write('Suchbegriff: ');  ReadLn(suchspez);  WriteLn;
  58.   i := Pos('/',suchspez);                (* andere Sortierung gewuenscht ? *)
  59.   IF i = 0 THEN i := Succ(Length(suchspez))                     (* nein... *)
  60.   ELSE IF i < Length(suchspez) THEN   (* ja, aber wenn nach "/" noch ein   *)
  61.       CASE suchspez[Succ(i)] OF       (* weiteres Zeichen eingegeben wurde *)
  62.         'd','D': sort := DirDate;
  63.         's','S': sort := DirSize;
  64.         'e','E': sort := DirExt;
  65.       END;
  66.   suchspez := Copy(suchspez,1,Pred(i));        (* Sortier-Option entfernen *)
  67.   volname := '*.*';  i := Pos(':',suchspez);   (* Suchspezifikation fuer   *)
  68.   IF i > 0 THEN                                (* Suche n. Volume-Eintrag  *)
  69.     volname := Concat(Copy(suchspez,1,i),volname);             (* erzeugen *)
  70.   DirFirst(volname,DirVol,volume);                (* Volume-Eintrag suchen *)
  71.   IF DirResult = DOSfnok THEN MakeFileName(volume,volname)
  72.   ELSE volname := '';
  73.      (* Directory gemaess Suchspez. einlesen, jedoch mit allen Attributen: *)
  74.   Dir(suchspez,DirRO+DirHid+DirSys+DirDir,Directory);
  75.   SortDir(sort,Directory);          (* Directory sortieren, kann entfallen *)
  76.   ShowDir(volname);                 (* Directory schliesslich anzeigen...  *)
  77.   DispDirDTA;                (* eigene DTA wird nicht mehr gebraucht, kann *)
  78. END.                         (* entfallen, da sowieso Programm zu ende!    *)
  79.