[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    unit DosEnv01;
    { Class to read the DOS Environment variables }

    interface

    uses SysUtils, WinProcs, Classes;

    type
      TDOSEnvironment = class
      private
        FKeys: TStringList;
        FValues: TStringList;
        function GetCount: Integer;
        function GetKey(Index: Integer): string;
        function GetValue(Index: Integer): string;
      protected
      public
        constructor Create;
        destructor Destroy; override;
        function ValueForKey(const Key: string): string;
        property Count: Integer read GetCount;
        property Key[Index: Integer]: string read GetKey;
        property Value[Index: Integer]: string read GetValue;
      end;

    implementation

    { TDOSEnvironment }

    constructor TDOSEnvironment.Create;
    var
      EnvStrings: PChar;
      S: string;

    begin
      FKeys := TStringList.Create;
      FValues := TStringList.Create;

      {$IFDEF WIN32}
        EnvStrings := GetEnvironmentStrings;
      {$ELSE}
        EnvStrings := GetDosEnvironment;
      {$ENDIF}

      while EnvStrings[0] <> #0 do
        begin
          S := StrPas(EnvStrings);
          FKeys.Add(Copy(S,1,Pos('=',S)-1));
          FValues.Add(Copy(S,Pos('=',S)+1,255));
          Inc(EnvStrings,StrLen(EnvStrings)+1);
        end;
    end;

    destructor TDOSEnvironment.Destroy;
    begin
      FKeys.Free;
      FValues.Free;
    end;

    function TDOSEnvironment.ValueForKey(const Key: string): string;
    var
      I: Integer;

    begin
      I := FKeys.IndexOf(Key);
      if I >= 0 then
        Result := FValues.Strings[I]
      else
        Result := '';
    end;

    function TDOSEnvironment.GetCount: Integer;
    begin
      Result := FKeys.Count;
    end;

    function TDOSEnvironment.GetKey(Index: Integer): string;
    begin
      Result := FKeys.Strings[Index];
    end;

    function TDOSEnvironment.GetValue(Index: Integer): string;
    begin
      Result := FValues.Strings[Index];
    end;

    end.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]