[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]