Difference between revisions of "Global variables"
(produce some content) |
|||
(One intermediate revision by the same user not shown) | |||
Line 43: | Line 43: | ||
The [[FPC]] supports thread variables, too. | The [[FPC]] supports thread variables, too. | ||
They are sort of half-way between global and local variables. | They are sort of half-way between global and local variables. | ||
− | A [[ThreadVar|<syntaxhighlight lang="delphi" inline>threadVar</syntaxhighlight> | + | A [[ThreadVar|<syntaxhighlight lang="delphi" inline>threadVar</syntaxhighlight> variable]] is local to a thread. |
== see also == | == see also == |
Latest revision as of 01:50, 22 February 2024
│
English (en) │
suomi (fi) │
русский (ru) │
A variable is global if it is exported from a module.
This usually refers to variables declared in a var
section
Global variables can be accessed from all other modules that import the exporting modules.
Note, however, that a program
can not be imported.
program globalVariableDemo(input, output, stdErr);
var
x: integer;
procedure doMagic;
begin
// here, x is global to doMagic
end;
procedure foo;
var
// shadow the global x
x: integer;
begin
// here, x is local,
// as the top-scope x can not be accessed
end;
// MAIN //
begin
// here, x is local
end.
remarks
If speed matters, global variables are/were used for frequently invoked routines, since allocating local variables on the stack takes time. This, however, is considered bad style. Nest your variables as deep as possible, but as high as necessary.
A resourceString
variable is always global.
The FPC supports thread variables, too.
They are sort of half-way between global and local variables.
A threadVar
variable is local to a thread.