home *** CD-ROM | disk | FTP | other *** search
- Unit Environ;
-
- Interface
-
- function SelfPath(Entire : boolean) : string;
- function Environment(SearchString : string) : string;
-
- Implementation
-
- function SelfPath(Entire : boolean) : string;
- var
- EnvSeg :integer;
- sp : integer;
- temp : string;
-
- begin
- sp := 0;
- Temp := '';
- EnvSeg:=memW[prefixseg:$2c];
- while MemW[EnvSeg:sp] <> 0 do Inc(sp);
- Inc(sp, 4);
- while Mem[EnvSeg:sp] <> 0 do begin
- Temp := Temp + chr(mem[EnvSeg:sp]);
- Inc(sp);
- end;
- if not Entire then begin
- sp := Length(Temp);
- while (Temp[sp] <> '\') do Dec(sp);
- Temp := Copy(Temp, 1, sp);
- end;
- SelfPath := Temp;
- end;
-
- function Environment(SearchString : string) : string;
- var
- EnvSeg : Integer;
- MemOffset : Integer;
- Loc, MemValue : Byte;
- LeftSide,RightSide : String;
- NoMoreParams,
- EqualSignFound : Boolean;
-
- begin
- NoMoreParams := FALSE;
- MemOffSet := 0;
- EnvSeg := MemW[PrefixSeg:$002C];
- for Loc := 1 to Length(SearchString) do
- SearchString[Loc] := Upcase(SearchString[Loc]);
- repeat
- LeftSide[0] := #0;
- RightSide[0] := #0;
- EqualSignFound := False;
- MemValue := Mem[EnvSeg:MemOffSet];
- NoMoreParams := (Memvalue = 0);
- Inc(MemOffset);
- While (MemValue <>0 ) do begin
- if chr(MemValue) = '=' then EqualSignFound := TRUE
- else if EqualSignFound then RightSide := RightSide + Chr(MemValue)
- else LeftSide := LeftSide + Chr(MemValue);
- MemValue := Mem[EnvSeg:MemOffSet];
- Inc(MemOffset);
- end;
- if (SearchString = 'ALL') and (NOT NoMoreParams) then
- writeln(LeftSide,' = ',RightSide);
- until ( (LeftSide = SearchString) OR (NoMoreParams) );
- Environment := RightSide;
- end;
-
- begin
- end.
-