home *** CD-ROM | disk | FTP | other *** search
- PROGRAM DirDemo;
-
- CONST
- (*$I DIRCONST.PAS *)
- TYPE
- (*$I DIRMTTYP.PAS *) (* bzw. DIRCPTYP.PAS fuer CP/M 3.0 *)
- VAR
- (*$I DIRVAR.PAS *)
- volume : Dir_Rec;
- suchspez, volname: Dir_Str;
- sort, i : INTEGER;
-
- (*$I DIRMT.TUR *) (* bzw. DIRMT.PSP fuer Atari, DIRCP.TUR fuer CP/M 3.0 *)
- (*$I DIRMTDTA.PAS *) (* bzw. DIRCPDTA.PAS fuer CP/M 3.0 *)
- (*$I DIRLIB.PAS *)
- (* ----------------------------------------------------------------------- *)
- (* Directory seitenweise anzeigen: *)
- PROCEDURE ShowDir (volname: Dir_Str);
- VAR i, maske: INTEGER;
- BEGIN
- i := 0;
- WITH Directory DO
- WHILE i < num DO BEGIN
- i := Succ(i);
- IF i MOD 22 = 1 THEN BEGIN
- WriteLn;
- WriteLn('Name Typ','Groesse':15,'Datum':10,'Zeit':10,
- ' R H S V D B Disk:',volname);
- (* R: read only, H: hidden, S: system, V: volume,
- D: directory, B: backup *)
- WriteLn('-------- --- ------------- -------- --------',
- ' -----------');
- END;
- WITH items[i] DO BEGIN
- Write(name:8,' ',ext:3, size:15:0,' ');
- Write(Copy(date,7,2),'-',Copy(date,5,2),'-',Copy(date,3,2),' ');
- Write(Copy(time,1,2),':',Copy(time,3,2),':',Copy(time,5,2),' ');
- maske := 1; (* die gesetzten Attribute anzeigen: *)
- REPEAT
- IF AndInt(attr,maske) <> 0 THEN Write(' *') ELSE Write(' ');
- maske := maske * 2;
- UNTIL maske > 32;
- WriteLn;
- END;
- IF i MOD 22 = 0 THEN BEGIN
- Write('Weiter -> RETURN '); ReadLn;
- END;
- END;
- IF i MOD 22 <> 0 THEN BEGIN
- Write('Weiter -> RETURN '); ReadLn;
- END;
- END;
- (* ----------------------------------------------------------------------- *)
- BEGIN
- NewDirDTA; (* DTA fuer Directory-Funktionen anlegen *)
- sort := DirName; (* falls nicht anders angegeben,wird nach Name sortiert *)
- WriteLn; Write('Suchbegriff: '); ReadLn(suchspez); WriteLn;
- i := Pos('/',suchspez); (* andere Sortierung gewuenscht ? *)
- IF i = 0 THEN i := Succ(Length(suchspez)) (* nein... *)
- ELSE IF i < Length(suchspez) THEN (* ja, aber wenn nach "/" noch ein *)
- CASE suchspez[Succ(i)] OF (* weiteres Zeichen eingegeben wurde *)
- 'd','D': sort := DirDate;
- 's','S': sort := DirSize;
- 'e','E': sort := DirExt;
- END;
- suchspez := Copy(suchspez,1,Pred(i)); (* Sortier-Option entfernen *)
- volname := '*.*'; i := Pos(':',suchspez); (* Suchspezifikation fuer *)
- IF i > 0 THEN (* Suche n. Volume-Eintrag *)
- volname := Concat(Copy(suchspez,1,i),volname); (* erzeugen *)
- DirFirst(volname,DirVol,volume); (* Volume-Eintrag suchen *)
- IF DirResult = DOSfnok THEN MakeFileName(volume,volname)
- ELSE volname := '';
- (* Directory gemaess Suchspez. einlesen, jedoch mit allen Attributen: *)
- Dir(suchspez,DirRO+DirHid+DirSys+DirDir,Directory);
- SortDir(sort,Directory); (* Directory sortieren, kann entfallen *)
- ShowDir(volname); (* Directory schliesslich anzeigen... *)
- DispDirDTA; (* eigene DTA wird nicht mehr gebraucht, kann *)
- END. (* entfallen, da sowieso Programm zu ende! *)