15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как получить переменные окружения типа PATH и PROMPT

Вариант 1:

Для этого используется API функция GetEnvironmentVariable.

GetEnvironmentVariable возвращает значения:

- В случае удачного выполнения функции, возвращаемое значение содержит количество символов, хранящихся в буфере, не включая последнего нулевого.

- Если указанная переменная окружения для текущего процесса не найдена, то возвращаемое значение равно нулю.

- Если буфер не достаточного размера, то возвращаемое значение равно требуемому размеру для хранения строки значения и завершающего нулевого символа.



function GetDOSEnvVar(const VarName: string): string;
var
  i: integer;
begin
  Result := '';
  try
    i := GetEnvironmentVariable(PChar(VarName), nil, 0);

    if i > 0 then
      begin
        SetLength(Result, i);
        GetEnvironmentVariable(Pchar(VarName), PChar(Result), i);
      end;
  except
    Result := '';
  end;
end;

 

------------------------------------------------------------------------------------------------------------

Вариант 2:

procedure TMainFrm.AddVarsToMemo(Sender: TObject);
var
  p : pChar;
begin
  Memo1.Lines.Clear;
  Memo1.WordWrap := false;
  p := GetEnvironmentStrings;
  while p^ <> #0 do begin
    Memo1.Lines.Add(StrPas(p));
    inc(p, lStrLen(p) + 1);
  end;
FreeEnvironmentStrings(p);
end;