-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenvvars.html
216 lines (208 loc) · 9.59 KB
/
envvars.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
---
dl-file-prefix: "dd-envvars-"
layout: "codelib-tplt"
group: lib
priority: 9
version: "3.0.0"
release-date: "2014-01-30"
platforms: ["Win32", "Win64"]
frameworks: ["VCL", "FMX"]
compatibility: "Delphi 7 & later"
title: "Environment Variables Unit"
precis: "Code to help manage and access environment variables"
summary: "Source code of a unit containing a static class and other code to help manage and access environment variables."
meta-title: "Environment Variables Unit for Delphi Pascal VCL & FMX | Open Source | 32 & 64 bit"
meta-desc: "Delphi Pascal unit for reading & writing Windows environment variables & for creating environment blocks for child processes. Requires Delphi 7 & later."
download-base-url: "https://sourceforge.net/projects/ddablib/files/envvars/"
repo-url: "https://github.com/ddablib/envvars"
docs-url: "https://lib-docs.delphidabbler.com/EnvVars/"
want-header-buttons: true
status: "current"
---
{% assign dl-file = page.dl-file-prefix | append: page.version | append: ".zip" %}
{% assign dl-url = page.download-base-url | append: dl-file %}
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Overview
</h2>
</div>
<div class="panel-body">
<p>
This unit provides a static class for reading and modifying the environment variables available to the current process, along with a class that can be used to enumerate environment variable names.
</p>
<p class="alert alert-warning glyph">
The unit also contains a component and a set of routines that duplicate some of the features provided by the static class. These are now <strong>deprecated</strong> and are provided for backward compatibility reasons only: they should no longer be used in new code and may be removed from future releases.
</p>
<h3 data-toggle="collapse" data-target="#features" class="collapsible collapsed">
Features
</h3>
<div id="features" class="collapse"> <!-- begin collapsible #features section -->
<p>
The static class has methods to:
</p>
<ul>
<li>
Read, write and delete environment variables.
</li>
<li>
Query whether an environment variable exists.
</li>
<li>
Get the number of environment variables in the environment block along with the size of the block.
</li>
<li>
List and enumerate the names, or names and values, of all environment variables in the environment block.
</li>
<li>
Create a new environment block suitable for passing to a child process.
</li>
</ul>
<p>
There is also an enumerator class the provides an alternative way to enumerate environment variable names.
</p>
</div> <!-- /#features -->
<h3 data-toggle="collapse" data-target="#demo" class="collapsible collapsed">
Demo code
</h3>
<div id="demo" class="collapse"> <!-- begin collapsible #demo section -->
<p>
Two different demo programs are included in the <code>Demos\1</code> and <code>Demos\2</code> sub-directories. There are VCL and FireMonkey 2 versions of each demo.
</p>
<p>
The demo programs are documented in the file <code>DemosReadMe.htm</code> that can be found in the <code>Demos</code> directory.
</p>
</div> <!-- /#demo -->
<h3 data-toggle="collapse" data-target="#how-it-works" class="collapsible collapsed">
How the code works
</h3>
<div id="how-it-works" class="collapse"> <!-- begin collapsible #how-it-works section -->
<p>
This unit uses ideas from my article "<a href="/articles/article-6">How to access environment variables</a>". The article shows how to develop routines similar to some of the methods in this unit and discusses their operation.
</p>
</div> <!-- /#how-it-works -->
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Get The Code
</h2>
</div>
<div class="panel-body">
<p>
You can download the latest version of the <em>{{page.title}}</em> directly from SourceForge as <code>{{ dl-file }}</code>.
</p>
<p class="text-center">
<a class="btn btn-primary" role="button" href="{{ dl-url }}" aria-label="Go to SourceForge and download latest version automatically">Download <span class="hidden-xs">release </span>v{{ page.version }}<span class="hidden-xs"> from SourceForge</span></a>
</p>
<p>
The <em>{{ page.title }}</em> source code is hosted in the <a href="{{ page.repo-url }}" aria-label="Link to the ddablib/envvars repository on GitHub"><code>ddablib/envvars</code></a> GitHub repository. You can <code>git clone</code> or fork the repository as required.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Installation
</h2>
</div>
<div class="panel-body">
<p>
The <em>{{page.title}}</em> is supplied in a zip file. Before installing you need to extract all the files from the zip file, preserving the directory structure. The following files will be extracted:
</p>
<ul class="list-group">
<li class="list-group-item">
<strong><code>PJEnvVars.pas</code></strong> – contains all source code, including the deprecated component, but excluding the component registration code.
</li>
<li class="list-group-item">
<strong><code>PJEnvVars.dcr</code></strong> – component palette
glyph for the deprecated component. <span class="text-warning bg-warning glyph">Deprecated</span>
</li>
<li class="list-group-item">
<strong><code>PJEnvVarsDsgn.pas</code></strong> – registration code for the deprecated component. <span class="text-warning bg-warning glyph">Deprecated</span>
</li>
<li class="list-group-item">
<code>ReadMe.htm</code> – read-me file.
</li>
<li class="list-group-item">
<code>ChangeLog.txt</code> – project change log.
</li>
<li class="list-group-item">
<code>MPL-2.txt</code> – the Mozilla Public License v2.0.
</li>
<li class="list-group-item">
<code>Documentation.URL</code> – short-cut to the unit's online documentation.
</li>
</ul>
<p>
In addition to the above files you will find the source code for various demo projects in the <code>Demos</code> directory.
</p>
<p>
There are three possible ways to use the unit:
</p>
<ol>
<li>
The simplest way is the add a copy of <code>PJEnvVas.pas</code> to your projects whenever the unit is needed.
</li>
<li>
To make the unit easier to re-use you can either copy it to a folder on your Delphi search path, or add the folder containing the unit to the Delphi Search path. You then simply use the unit as required without needing to add it to your project.
</li>
<li>
For maximum portability you can add <code>PJEnvVars.pas</code> to a Delphi package.
</li>
</ol>
<p class="alert alert-warning glyph">
None of the above methods will install the deprecated component into the Delphi IDE. To do this you need to add <code>PJEnvVars.pas</code>, <code>PJEnvVars.dcr</code> and <code>PJEnvVarsDsgn.pas</code> should be added to a design time package. If you need help doing this <a href="{{ site.data.core.install-to-ide-link }}" aria-title="see a tip on working with design time packages">see here</a>.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
Documentation
</h2>
</div>
<div class="panel-body">
<p>
The <em>{{page.title}}</em> is comprehensively documented online <a href="{{ page.docs-url }}" aria-title="View the online documentation">here</a>
</p>
<p>
The project's change log can be viewed <a href="https://raw.githubusercontent.com/ddablib/envvars/main/Docs/ChangeLog.txt" aria-title="View the change log in plain text">here</a>.
</p>
<p>
A read-me file (<code>ReadMe.htm</code>) is included in the project download.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title" id="feedback">
Feedback & Queries
</h2>
</div>
<div class="panel-body">
<p>
If you find any bugs or want to suggest a new feature please report them using the <em>{{page.title}}</em> <a href="https://github.com/ddablib/envvars/issues">issue tracker</a>.
</p>
<p>
If you have created a bug fix or have implemented a new feature please open a pull request for it.
</p>
<p>
Should you have any queries about using the unit please read the <a href="{{ page.docs-url }}">documentation</a>. If you can't find an answer in the documentation then post a message in the <a href="https://github.com/orgs/ddablib/discussions">discussion group</a>.
</p>
</div>
</section>
<section class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">
License
</h2>
</div>
<div class="panel-body">
<p>
<span class="fa fa-copyright fa-pull-left fa-3x"></span>
The <em>{{page.title}}</em> is open source. It is copyright © 2001-2014 by <a href="https://en.gravatar.com/delphidabbler" aria-label="Peter Johnson's Gravatar account">Peter Johnson</a>. The source code is made available under the terms of the <a href="https://www.mozilla.org/MPL/2.0/" aria-label="Mozilla Public License v2.0 on mozilla.org">Mozilla Public License v2.0</a>. All relevant trademarks are acknowledged.
</p>
</div>
</section>