Help us understand the problem. What is going on with this article?

<3> プログラムヘッダと宣言部 (標準 Pascal 範囲内での Delphi 入門)〔裏〕

3. プログラムヘッダと宣言部

3.1. プログラムヘッダ (Program heading )

3.2. ラベル宣言部 (Label declaration part)

・識別子が利用可能なラベルの由来

Delphi の場合にはラベルに識別子が使えます。

この拡張は BLS Pascal (Turbo Pascal の前身) 由来のようです。

See also:

3.3. 定数定義部 (Constant declaration part)

(3.3.1.) 定数式 (Constant Expressions)

(3.3.2.) 型付きの定数 (Typed Constants)

・書き込み可能な型付き定数について

型付きの定数はDelphi 5 までは書き込み可能でした。実質的には初期化済み変数という事になります。
image.png
また、書き込み可能な型付き定数静的変数として振舞います。

StaticVar.pas
program StaticVar;
{$APPTYPE CONSOLE}

{$J+} // Writable Const

var
  i: Integer;

procedure A;
const
  foo: Integer = 0;
begin
  Inc(foo);
  writeln(foo);
end;

begin
  for i := 1 to 10 do
    A();
end.

このコードの実行結果は以下の通りです。

1
2
3
4
5
6
7
8
9
10

型付きの定数の挙動は Delphi 2 から {$J} コンパイラ指令で制御できるようになり、Delphi 6 において {$J-} (書き込み不可能な型付き定数) がデフォルトとなりました。

つまり、Turbo Pascal や Delphi 1 では型付きの定数は常に書き込み可能でした。Delphi 2 のマニュアルには {$J-} がデフォルトであるかのように書かれていますが、実際には {$J+} がデフォルトです。

See also:

3.4. 型定義部 (Type definition part)

3.5. 変数宣言部 (Variable declaration part)

(3.5.1.) プログラムヘッダのパラメータ

(3.5.2) インライン変数宣言 (Inline Variable Declaration)

3.6. 手続き・関数宣言部 (Procedure and Function declaration part)

3.7. 識別子とラベルの有効範囲

索引

:ramen: [ ← 2. データの概念: 単純型〔裏〕 ] [ ↑ 目次へ ] [ → 4. 動作の概念〔裏〕 ]

ht_deko
とある熊本の障害復旧(トラブルシューター)
https://ht-deko.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away