На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: jack128, Rouse_, Krid
  
    > Работа с переменными окружения
      Вариант 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;


      Добавлено в
      Как установить переменные окружения

      Следующая простая подпрограмма создаёт новые значения в переменных окружения. Если переменной окружения не существует, то она создаётся. Если переменной окружения установить значение пустой строки, то переменная удаляется. Функция возвращает 0, если значение переменной установлено или переменная создана успешно, либо возвратит значение ошибки Windows вслучае неудачи. Обратите внимание, что размер пространства доступного для переменных окружения ограничен.

      function SetEnvVarValue(const VarName,
       VarValue: string): Integer;
      begin
       // Просто вызываем API функцию
       if Windows.SetEnvironmentVariable(PChar(VarName),
         PChar(VarValue)) then
         Result := 0
       else
         Result := GetLastError;
      end;


      ЗАМЕЧАНИЕ: данный способ позволяет делать изменения в переменных окружения только для текущего процесса либо для дочерних процессов, порождённых текущим.

      Для того, чтобы передать какую-либо переменную окружения в дочерний процесс просто:

      1) Создайте новую переменную окружения при помощи SetDOSEnvVar.
      2) Запустите новую программу.

      А вот как выглядит пример передачи текущих переменных окружения + переменной FOO=Bar в дочерний процесс:

      { skip ... }
      var
       ErrCode: Integer;
      begin
       ErrCode := SetEnvVarValue('FOO', 'Bar');
       if ErrCode = 0 then
         WinExec('MyChildProg.exe', SW_SHOWNORMAL);
       else
         ShowMessage(SysErrorMessage(ErrCode));
      end;
      { ... end skip }


      Так же можно воспользоваться примером, содержащем различные примеры работы с переменными окружения, который можно скачать здесь: http://www.sources.ru/delphi/system/envvardemo.zip
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0137 ]   [ 16 queries used ]   [ Generated: 27.04.24, 18:28 GMT ]