Difference between revisions of "&"
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{&}} | {{&}} | ||
<div style="float:left; margin: 0 25px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">&</div> | <div style="float:left; margin: 0 25px 20px 0; padding:40px; font-size:500%; font-family: Georgia; background-color: #f9f9f9; border: 2px solid #777777;">&</div> | ||
+ | In [[ASCII]] the character code decimal <syntaxhighlight lang="pascal" inline>38</syntaxhighlight> (or [[Hexadecimal|<syntaxhighlight lang="pascal" inline>$</syntaxhighlight>]]<syntaxhighlight lang="pascal" inline>26</syntaxhighlight>) is defined to be <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> (pronounced “ampersand”). | ||
+ | == Pascal == | ||
+ | === octal base === | ||
+ | In [[Pascal]] the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> denotes an octal base number. | ||
+ | <syntaxhighlight lang="pascal" line highlight="9"> | ||
+ | program messageNo(input, output, stderr); | ||
− | + | uses | |
+ | baseUnix; | ||
+ | begin | ||
+ | // withdraw group write access to current terminal | ||
+ | // equivalent to invoking: mesg n | ||
+ | fpChmod('/dev/stdin', &0600); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | In an octal base only the characters <syntaxhighlight lang="pascal" inline>0</syntaxhighlight> through and including <syntaxhighlight lang="pascal" inline>7</syntaxhighlight> are allowed. | ||
+ | An optional sign is specified in front of the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight>. | ||
− | + | As a passing remark, in a production program the number in the above example is better written as | |
− | * | + | <syntaxhighlight lang="pascal"> |
+ | fpChmod('/dev/stdin', S_IRUSR or S_IWUSR); | ||
+ | </syntaxhighlight> | ||
+ | since it is more meaningful than having a raw number. | ||
+ | Pascal is a high-level language. | ||
+ | Use this advantage. | ||
+ | Write what you ''mean'', not what in fact the computer does. | ||
+ | |||
+ | {{Note|Octal number literals are not supported in [[Mode Delphi|<syntaxhighlight lang="pascal" inline>{$mode Delphi}</syntaxhighlight>]] and [[Mode TP|<syntaxhighlight lang="pascal" inline>{$mode TP}</syntaxhighlight>]].}} | ||
+ | |||
+ | === identifier escape === | ||
+ | [[FPC|FreePascal]] retroactively declared some new [[Reserved word|reserved words]]. | ||
+ | In order of being capable of compiling old code with an up-to-date [[Compiler|compiler]] version, which might fail due to those new reserved words, FPC declared the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> as an escape character. | ||
+ | Thus, without refactoring the code but escaping, i.e. prepending an <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> to the [[Identifier|identifier]], the compiler accepts the actual reserved word as a valid identifier. New code though shall come up with different identifier names, without utilizing this feature. | ||
+ | |||
+ | == Lazarus == | ||
+ | In [[Lazarus]] the <syntaxhighlight lang="pascal" inline>&</syntaxhighlight> is used to | ||
+ | * indicate shortcut keys in [[TMenuItem|<syntaxhighlight lang="pascal" inline>TMenuItem</syntaxhighlight>]] | ||
+ | |||
+ | {{Symbols}} |
Latest revision as of 17:24, 6 August 2022
│
English (en) │
suomi (fi) │
français (fr) │
português (pt) │
русский (ru) │
In ASCII the character code decimal 38
(or $
26
) is defined to be &
(pronounced “ampersand”).
Pascal
octal base
In Pascal the &
denotes an octal base number.
1program messageNo(input, output, stderr);
2
3uses
4 baseUnix;
5
6begin
7 // withdraw group write access to current terminal
8 // equivalent to invoking: mesg n
9 fpChmod('/dev/stdin', &0600);
10end.
In an octal base only the characters 0
through and including 7
are allowed.
An optional sign is specified in front of the &
.
As a passing remark, in a production program the number in the above example is better written as
fpChmod('/dev/stdin', S_IRUSR or S_IWUSR);
since it is more meaningful than having a raw number. Pascal is a high-level language. Use this advantage. Write what you mean, not what in fact the computer does.
{$mode Delphi}
and {$mode TP}
.identifier escape
FreePascal retroactively declared some new reserved words.
In order of being capable of compiling old code with an up-to-date compiler version, which might fail due to those new reserved words, FPC declared the &
as an escape character.
Thus, without refactoring the code but escaping, i.e. prepending an &
to the identifier, the compiler accepts the actual reserved word as a valid identifier. New code though shall come up with different identifier names, without utilizing this feature.
Lazarus
In Lazarus the &
is used to
- indicate shortcut keys in
TMenuItem
single characters |
|
character pairs |
|