home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 12 / environ.inc < prev    next >
Encoding:
Text File  |  1987-09-28  |  2.1 KB  |  53 lines

  1. (* ------------------------------------------------------------------------- *)
  2. (*                              ENVIRON.INC  (v1.0)                          *)
  3. (*   Aufgabe:  Verwendung der DOS-Umgebungsvariablen in Turbo-Programmen     *)
  4. (*           (c)  1987  Karsten Gieselmann  &  PASCAL International          *)
  5. (* ------------------------------------------------------------------------- *)
  6.  
  7. TYPE EnvStr = STRING[255];                            (* interner String-Typ *)
  8.  
  9. (* liefert die rechte Seite der DOS-Umgebungszeile "LeftSide=..."; Groß-
  10.    und  Kleinschreibung werden bei der Angabe von  "LeftSide" ignoriert.
  11.    Existiert die mit LeftSide spezifizierte Umgebungsvariable nicht,  so
  12.    wird ein leerer String zurueckgegeben.                                    *)
  13. FUNCTION EnvironStr (LeftSide: EnvStr): EnvStr;
  14.  
  15.    FUNCTION Environment (VAR Address): EnvStr;
  16.      VAR EnvData : ARRAY[1..MaxInt] OF CHAR ABSOLUTE Address;
  17.          EnvLine : EnvStr;
  18.          Index   : INTEGER;
  19.          found   : BOOLEAN;
  20.          LeftLen,
  21.          EnvLen  : BYTE;
  22.  
  23.    BEGIN
  24.      FOR Index := 1 TO Length(LeftSide) DO                 (* Grosschreibung *)
  25.        LeftSide[Index] := UpCase(LeftSide[Index]);
  26.      Index := 1;
  27.      found := FALSE;
  28.      LeftLen := Length(LeftSide) + 2;
  29.      REPEAT
  30.        EnvLine := '';
  31.        WHILE EnvData[Index] <> #0 DO            (* eine Zeile zusammensetzen *)
  32.        BEGIN
  33.          EnvLine := EnvLine + EnvData[Index];
  34.          Index := Succ(Index)
  35.        END;
  36.        Index := Succ(Index);
  37.        found := (Pos(LeftSide,EnvLine) = 1) AND (EnvLine[LeftLen-1] = '=');
  38.        IF found THEN
  39.          BEGIN
  40.            EnvLen := Length(EnvLine);
  41.            Environment := Copy(EnvLine, LeftLen, EnvLen-LeftLen+1);
  42.          END;
  43.      UNTIL (EnvData[Index] = #0) OR found;         (* bis Ende oder gefunden *)
  44.      IF NOT found THEN
  45.        Environment := ''
  46.    END;
  47.  
  48. BEGIN (* EnvironStr *)
  49.   EnvironStr := Environment(Mem[MemW[CSeg:$002C]:$0000]);
  50. END;
  51. (* ------------------------------------------------------------------------- *)
  52. (*                              ENVIRON.INC                                  *)
  53.