home *** CD-ROM | disk | FTP | other *** search
-
-
- UNIT SELECTD4;
- {
- STELLT DAS DIRECTORY EIN, AUF DEM SICH DAS AUFGERUFENE
- PROGRAMM BEFINDET
- BEI PROGRAMMENDE WIRD DAS URSPRÜNGLICHE DIRECTORY WIEDER SELEKTIERT
-
- PAUL SCHUBERT, ROTTWEILER STR.8, 6000 FRANKFURT 1, 069 / 231145
-
- DIESE VERSION NUR MIT TURBO PASCAL 4.0 BENUTZEN, WEIL UNTER VERSION
- >= 5.0 DAS AUFFINDEN DES ZIELDIRECTORY VIEL EINFACHER IST !
- }
-
- {$F+}
-
- INTERFACE
-
-
- VAR QUELLDIR,ZIELDIR : STRING[64];
-
-
- PROCEDURE SELECTDNOEXIT;
-
-
- IMPLEMENTATION
-
-
- TYPE SOF = RECORD O,S : WORD; END;
- CHARR = ARRAY[0..1] OF CHAR;
-
- VAR EXITSAVE : POINTER;
- I : WORD;
-
-
- PROCEDURE SELECTDNOEXIT;
- BEGIN
- EXITPROC := EXITSAVE;
- END;
-
-
- PROCEDURE MYEXIT;
- BEGIN
- {$I-}
- CHDIR(QUELLDIR);
- I := IORESULT;
- {$I+}
- EXITPROC := EXITSAVE;
- END;
-
-
- PROCEDURE SUCHNAME;
- VAR I : WORD;
- ENV : ^CHARR;
- BEGIN
- ENV := PTR(MEMW[PREFIXSEG:$2C],0);
- ZIELDIR := '';
- I := 0;
- REPEAT
- WHILE ENV^[I] <> #0 DO INC(I);
- INC(I);
- UNTIL (ENV^[I] = #0);
- INC(I);
- IF ENV^[I] <> #1 THEN EXIT;
- INC(I);
- IF ENV^[I] <> #0 THEN EXIT;
- INC(I);
- WHILE ENV^[I] <> #0 DO BEGIN
- ZIELDIR := ZIELDIR + ENV^[I];
- INC(I);
- END;
- END; { SUCHNAME }
-
-
- BEGIN
- GETDIR(0,QUELLDIR);
- SUCHNAME;
- I := LENGTH(ZIELDIR);
- WHILE (I > 0) AND (ZIELDIR[I] <> '\') DO BEGIN
- DELETE(ZIELDIR,I,1);
- DEC(I);
- END;
- IF (LENGTH(ZIELDIR) <> 3)
- THEN IF (I > 0) AND (ZIELDIR[I] = '\') THEN DELETE(ZIELDIR,I,1);
- IF LENGTH(ZIELDIR) = 0 THEN ZIELDIR := QUELLDIR;
- {$I-}
- CHDIR(ZIELDIR);
- I := IORESULT;
- {$I+}
- EXITSAVE := EXITPROC;
- EXITPROC := @MYEXIT;
- END.
-