home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / DOS_HELP / ENVIRON.ZIP / ENVIRON.PAS
Encoding:
Pascal/Delphi Source File  |  1990-11-09  |  1.9 KB  |  72 lines

  1. Unit Environ;
  2.  
  3. Interface
  4.  
  5. function SelfPath(Entire : boolean) : string;
  6. function Environment(SearchString : string) : string; 
  7.  
  8. Implementation
  9.  
  10. function SelfPath(Entire : boolean) : string;
  11. var
  12.   EnvSeg :integer;
  13.   sp : integer;
  14.   temp : string;
  15.  
  16. begin
  17.    sp := 0;
  18.    Temp := '';
  19.    EnvSeg:=memW[prefixseg:$2c];
  20.    while MemW[EnvSeg:sp] <> 0 do Inc(sp);
  21.    Inc(sp, 4);
  22.    while  Mem[EnvSeg:sp] <> 0 do begin
  23.       Temp := Temp + chr(mem[EnvSeg:sp]);
  24.       Inc(sp);
  25.    end;
  26.    if not Entire then begin
  27.       sp := Length(Temp);
  28.       while (Temp[sp] <> '\') do Dec(sp);
  29.       Temp := Copy(Temp,  1, sp);
  30.    end;
  31.    SelfPath := Temp;
  32. end;
  33.  
  34. function Environment(SearchString : string) : string; 
  35. var 
  36.   EnvSeg : Integer;
  37.   MemOffset          : Integer;
  38.   Loc, MemValue      : Byte;
  39.   LeftSide,RightSide : String;
  40.   NoMoreParams, 
  41.   EqualSignFound     : Boolean;
  42.  
  43. begin
  44.    NoMoreParams := FALSE;
  45.    MemOffSet    := 0;
  46.    EnvSeg := MemW[PrefixSeg:$002C];
  47.    for Loc := 1 to Length(SearchString) do
  48.       SearchString[Loc] := Upcase(SearchString[Loc]);
  49.    repeat
  50.       LeftSide[0]    := #0;
  51.       RightSide[0]   := #0;
  52.       EqualSignFound := False;
  53.       MemValue       := Mem[EnvSeg:MemOffSet];
  54.       NoMoreParams   := (Memvalue = 0); 
  55.       Inc(MemOffset);
  56.       While (MemValue <>0 ) do begin
  57.          if chr(MemValue) = '=' then EqualSignFound := TRUE
  58.             else if EqualSignFound then RightSide := RightSide + Chr(MemValue)
  59.             else LeftSide := LeftSide + Chr(MemValue);
  60.          MemValue     := Mem[EnvSeg:MemOffSet];
  61.          Inc(MemOffset);
  62.       end; 
  63.       if (SearchString = 'ALL') and (NOT NoMoreParams) then
  64.          writeln(LeftSide,' = ',RightSide);
  65.    until ( (LeftSide = SearchString) OR (NoMoreParams) );
  66.    Environment := RightSide;
  67. end; 
  68.  
  69. begin
  70. end.
  71.