home *** CD-ROM | disk | FTP | other *** search
/ On Disk Monthly 62 / odm62.zip / GDSOURCE.EXE / POPDIR.PAS < prev    next >
Pascal/Delphi Source File  |  1991-10-14  |  1KB  |  71 lines

  1. {$A-,B-,D+,E+,F-,G-,I+,L+,N-,O-,R-,S+,V-,X-}
  2. {$M 16384,0,655360}
  3. program popdir;
  4.  
  5. USES dos, crt;
  6.  
  7. CONST DataFilename    = 'C:\PATHS.DAT';
  8.       MaximumPaths    = 840;
  9.  
  10. VAR T        : text;
  11.     DTA      : searchrec;
  12.     NumPaths : integer;
  13.     Paths    : array [1..MaximumPaths] of DirStr;
  14.     DirGotten,
  15.     CurrPath        : DirStr;
  16.     I        : integer;
  17.     SaveExit : pointer;
  18.  
  19. {$F+}
  20. PROCEDURE DoExit;
  21. BEGIN
  22.   ExitProc := SaveExit;
  23.   IF ExitCode <> 0 THEN
  24.   BEGIN
  25.     WriteLn('Directory '+DirGotten+' invalid.');
  26.     ExitCode := 0;
  27.     ErrorAddr := NIL;
  28.   END;
  29. END;
  30. {$F-}
  31.  
  32. BEGIN
  33.   SaveExit := ExitProc;
  34.   ExitProc := @DoExit;
  35.   WriteLn('POP DIRECTORY Version 1.00 by George Leritte');
  36.   WriteLn('Copyright (c) 1991, Softdisk, Inc.');
  37.   Write(' ');
  38.   FindFirst(DataFilename, 32, DTA);
  39.   IF DosError <> 0  THEN
  40.   BEGIN
  41.     Assign(T, DataFilename);
  42.     Rewrite(T);
  43.     Close(T);
  44.     WriteLn('No paths pushed.  ');
  45.     Exit;
  46.   END;
  47.   Assign(T, DataFilename);
  48.   Reset(T);
  49.   NumPaths := 0;
  50.   WHILE NOT Eof(T) AND (NumPaths<MaximumPaths) DO
  51.   BEGIN
  52.     Inc(NumPaths);
  53.     ReadLn(T, Paths[NumPaths]);
  54.   END;
  55.   Close(T);
  56.   IF NumPaths = 0 THEN
  57.   BEGIN
  58.     WriteLn('  No paths pushed.  ');
  59.     Exit;
  60.   END;
  61.   DirGotten := Paths[NumPaths];
  62.   ChDir(DirGotten);
  63.   WriteLn('Directory '+DirGotten+' popped.');
  64.   Dec(NumPaths);
  65.   Assign(T, DataFilename);
  66.   Rewrite(T);
  67.   FOR I := 1 TO NumPaths DO
  68.     WriteLn(T, Paths[I]);
  69.   Close(T);
  70. END.
  71.