Работа с переменными окружения Работа с переменными окружения
Чтение значения переменной окружения |
*
| *
|
| |
Проще всего прочитать значение переменной окружения с заданным именем
при помощи функции GetEnvironmentVariable из модуля SysUtils:
Edit1.Text := GetEnvironmentVariable('TEMP')
Получение списка переменных окружения |
*
| *
|
| |
Получить список переменных окружения и их значений можно при
помощи функции API GetEnvironmentStrings. Эта функция возвращает указатель на
PCHAR буфер с данными в формате пременная=значение#0пременная=значение#0#0
Пример реализации:
var
i : integer;
EnvStrings :pchar;
EnvStringsMaxSize : integer;
s : string;
begin
EnvStringsMaxSize := 10000;
EnvStrings := GetEnvironmentStrings;
try
i:=0;
s:='';
while i < EnvStringsMaxSize do begin
if EnvStrings[i]<>#0 then
s:=s+EnvStrings[i]
else begin
if s='' then
break;
Memo1.Lines.Add(s);
s:='';
end;
inc(i);
end;
finally
// Освобождение буфера
FreeEnvironmentStrings(EnvStrings);
end;
Установка значения переменной подстановки текущего процесса |
*
| *
|
| |
Присвоение значения переменной подстановки текущего процесса производится
при помощи функции API SetEnvironmentVariable(имя переменной, значение переменной).
При этом если переменная с заданным именем существует, то производится присвоение ей
нового значение. Если переменная не существует, то она создается.
Пример:
SetEnvironmentVariable('MyEnvVar', 'MayVarValue');
Переменных подстановки на их знаения |
*
| *
|
| |
При работе с параметрами посдтановки можно столкнуться с тем, что в них используются
системные переменные подстановки вида %имя_переменной%. Наболее часто встречается
переменная %SystemRoot% (путь к каталогу, к который установлена система). Замену
проще всего произвести при помощи функции API ExpandEnvironmentStrings:
function ExpandEnvironmentStrings(lpSrc: PChar; lpDst: PChar; nSize: DWORD): DWORD; stdcall;
В качестве параметра lpSrc передается переменная с исходным значением, в качестве
lpDst - буфер-приемник для результата. Параметр nSize задает размер буфера lpDst.
В случает успешного выполнения функция возвращает количество символов, записанных в
буфер lpDst. Пример:
var
S : string;
buf : array[0..$FF] of char;
Size : integer;
begin
s := '%SystemRoot%\temp\';
Size := ExpandEnvironmentStrings(PChar(S), buf, sizeof(buf));
Memo1.Lines.Add(copy(buf, 1, Size));
end;
© Зайцев Олег, "Программирование на Delphi - обмен опытом" 1999-2004. При использовании любых материалов данного сайта
необходимо указывать источник информации. Дата обновления: 22.11.2004. Сайт размещен на хостинге AGAVA - Хостинг от AGAVA.ru