home *** CD-ROM | disk | FTP | other *** search
- PROGRAM DirDemo2;
-
- CONST
- (*$I DIRCONST.PAS *)
- TYPE
- (*$I DIRMTTYP.PAS *) (* bzw. DIRCPTYP.PAS fuer CP/M 3.0 *)
- VAR
- (*$I DIRVAR.PAS *)
- ch : CHAR;
- path, oldpth : Dir_Str;
- drive, olddrv : 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 *)
- (* ----------------------------------------------------------------------- *)
- PROCEDURE error;
- BEGIN
- WriteLn; Write('**** ');
- CASE DirResult OF
- DOSfnok : Write('OK');
- DOSfilnf : Write('Datei nicht gefunden');
- DOSpthnf : Write('Pfad nicht gefunden');
- DOSaccdn : Write('Zugriff abgelehnt');
- DOSedriv : Write('ungueltiges Laufwerk');
- DOSrmcur : Write('aktuelles Verzeichnis kann nicht geloescht werden');
- DOSnmfil : Write('keine weiteren Dateien');
- ELSE Write('unbekannter Fehler: ',DirResult);
- END;
- Write(' ****'); WriteLn;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE DoDir;
- VAR i: INTEGER;
- BEGIN
- WriteLn; WriteLn(DriveChar(GetDrive),':',path); WriteLn;
- Dir('*.*',DirRO+DirDir,Directory); SortDir(DirName,Directory);
- WITH Directory DO
- FOR i := 1 TO num DO BEGIN
- WITH items[i] DO BEGIN
- IF attr = DirDir THEN Write('<D> ') ELSE Write(' ');
- Write(name, '.', ext,' ');
- END;
- IF i MOD 4 = 0 THEN WriteLn;
- END;
- WriteLn;
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE DoChDir;
- BEGIN Write('neuer Pfad: '); ReadLn(path); ChDir(path); END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE DoMkDir;
- BEGIN Write('neues Verzeichniss (Pfad): '); ReadLn(path); MkDir(path); END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE DoRmDir;
- BEGIN
- Write('zu loeschendes Verzeichnis (Pfad): '); ReadLn(path); RmDir(path);
- END;
- (* ----------------------------------------------------------------------- *)
- PROCEDURE DoChDrive;
- BEGIN Write('neues Laufwerk: '); ReadLn(ch); ChDrive(DriveNum(ch)); END;
- (* ----------------------------------------------------------------------- *)
- BEGIN
- NewDirDTA; (* DTA fuer Directory-Funktionen anlegen *)
- (* Bei Programmende Wechsel auf altes Laufwerk und Verzeichnis ermoegl.: *)
- olddrv := GetDrive; GetDir(0, oldpth);
- REPEAT
- GetDir(0, path); (* Wo sind wir gerade ? *)
- WriteLn; WriteLn('Laufwerk: ', DriveChar(GetDrive));
- WriteLn('Pfad : ',path);
- WriteLn('Frei : ',DiskFree(0):0:0,' Bytes');
- WriteLn;
- Write('D)ir C)hDir M)kDir R)mDir CH)Drive Q)uit ? ');
- ReadLn(ch); ch := UpCase(ch);
- CASE ch OF
- 'D' : DoDir; 'C' : DoChDir; 'M' : DoMkDir; 'R' : DoRmDir;
- 'H' : DoChDrive;
- ELSE;
- END;
- IF ch <> 'Q' THEN error;
- UNTIL ch = 'Q';
- ChDrive(olddrv); ChDir(oldpth);
- DispDirDTA; (* eigene DTA wird nicht mehr gebraucht, kann *)
- END. (* entfallen, da sowieso Programm zu ende! *)