home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------------- *)
- (* ENVIRON.INC (v1.0) *)
- (* Aufgabe: Verwendung der DOS-Umgebungsvariablen in Turbo-Programmen *)
- (* (c) 1987 Karsten Gieselmann & PASCAL International *)
- (* ------------------------------------------------------------------------- *)
-
- TYPE EnvStr = STRING[255]; (* interner String-Typ *)
-
- (* liefert die rechte Seite der DOS-Umgebungszeile "LeftSide=..."; Groß-
- und Kleinschreibung werden bei der Angabe von "LeftSide" ignoriert.
- Existiert die mit LeftSide spezifizierte Umgebungsvariable nicht, so
- wird ein leerer String zurueckgegeben. *)
- FUNCTION EnvironStr (LeftSide: EnvStr): EnvStr;
-
- FUNCTION Environment (VAR Address): EnvStr;
- VAR EnvData : ARRAY[1..MaxInt] OF CHAR ABSOLUTE Address;
- EnvLine : EnvStr;
- Index : INTEGER;
- found : BOOLEAN;
- LeftLen,
- EnvLen : BYTE;
-
- BEGIN
- FOR Index := 1 TO Length(LeftSide) DO (* Grosschreibung *)
- LeftSide[Index] := UpCase(LeftSide[Index]);
- Index := 1;
- found := FALSE;
- LeftLen := Length(LeftSide) + 2;
- REPEAT
- EnvLine := '';
- WHILE EnvData[Index] <> #0 DO (* eine Zeile zusammensetzen *)
- BEGIN
- EnvLine := EnvLine + EnvData[Index];
- Index := Succ(Index)
- END;
- Index := Succ(Index);
- found := (Pos(LeftSide,EnvLine) = 1) AND (EnvLine[LeftLen-1] = '=');
- IF found THEN
- BEGIN
- EnvLen := Length(EnvLine);
- Environment := Copy(EnvLine, LeftLen, EnvLen-LeftLen+1);
- END;
- UNTIL (EnvData[Index] = #0) OR found; (* bis Ende oder gefunden *)
- IF NOT found THEN
- Environment := ''
- END;
-
- BEGIN (* EnvironStr *)
- EnvironStr := Environment(Mem[MemW[CSeg:$002C]:$0000]);
- END;
- (* ------------------------------------------------------------------------- *)
- (* ENVIRON.INC *)
-