Программирование на Delphi - обмен опытом / Работа с переменными окружения

© Зайцев Олег 1998-2004
Лучшая портативная техника. Плееры Камеры Телефоны Компьютеры
Покупателям, пришедшим на www.porta.ru по этой ссылке - дополнительная скидка 1%
Железо | Система | WEB | Компоненты | Графика | Ссылки | Мультимедиа | Сети | Прочее | Реестр | Литература

Статистика

Работа с переменными окружения

Рекомендую:
Главная страница \ Системное программирование \ Работа с переменными окружения

  • Работа с переменными окружения

    Работа с переменными окружения

    Чтение значения переменной окружения * * Задать вопрос Наверх
    Проще всего прочитать значение переменной окружения с заданным именем при помощи функции 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