home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* ENVIRON.PAS *)
- (* Unit zur Verwndung von Environment-Variablen *)
- (* unter Turbo Pascal 4.0 *)
- (* (c) 1989 by Uli Kobabe und TOOLBOX *)
- (* ------------------------------------------------------ *)
-
- UNIT Environ;
-
- INTERFACE
-
- FUNCTION LeseEnviron: STRING;
- (* liest den Environment-String aus dem PSP *)
-
- FUNCTION EnvVar(Variable: STRING): STRING;
- (* übergibt den im DOS-Environment gespeicherten String *)
- (* einer als Argument übergebenen Variablen *)
-
- (* ------------------------------------------------------ *)
-
- IMPLEMENTATION
-
- VAR Zeichen: CHAR;
- i: WORD;
-
- FUNCTION LeseEnviron: String;
-
- VAR EString: STRING;
- Adresse: WORD;
- Ende,
- Marke : STRING[2];
-
- BEGIN
- Adresse := MemW[PrefixSeg:$002C]; (* Staradresse PSP *)
- EString := '';
- Ende := Chr(0) + Chr(0); (* Endmarkierung Env.-String *)
- i := 0;
- Marke := Ende;
- REPEAT
- Zeichen := Chr(Mem[Adresse:i]);
- i := i + 1;
- Marke[1] := Marke[2];
- Marke[2] := Zeichen;
- EString := EString + Zeichen;
- UNTIL Marke = Ende;
- LeseEnviron := EString;
- END;
-
- (* ------------------------------------------------------ *)
-
- FUNCTION EnvVar(Variable: STRING): STRING;
-
- VAR Temp : STRING;
- gefunden: BOOLEAN;
- EString : STRING;
-
- BEGIN
- EString := LeseEnviron;
- FOR i := 1 TO Length(Variable) DO
- Variable[i] := UpCase(Variable[i]);
- i := 1;
- gefunden := FALSE;
- Temp := '';
- WHILE (NOT gefunden) AND (i < Length(EString)) DO BEGIN
- Zeichen := EString[i];
- IF Zeichen = Chr(0) THEN
- Temp := ''
- ELSE BEGIN
- Temp := Temp + Zeichen;
- IF Temp = Variable THEN gefunden := TRUE;
- END;
- i := i + 1;
- END;
- IF gefunden THEN BEGIN
- Temp := '';
- Zeichen := EString[i];
- i := i + 1;
- WHILE Zeichen <> Chr(0) DO BEGIN
- Zeichen := EString[i];
- IF Zeichen <> Chr(0) THEN Temp := Temp + Zeichen;
- i := i + 1;
- END;
- EnvVar := Temp;
- END ELSE EnvVar := '';
- END;
-
- END.
-
- (* ------------------------------------------------------ *)
- (* Ende von ENVIRON.PAS *)