Delphiで変更可能な定数を使用するには

Delphiでは書き換えできる定数を使用できます。

次のコードは定数を書き換えています。
このコードはコンパイルエラーになります。

procedure F;
const
  foo: Integer = 0;
begin
  foo := foo + 1; //[dcc32 エラー] Project1.dpr(13): E2064 代入できない左辺値です
  WriteLn(foo);
end;

コンパイラ司令「{$J+}」または「{$WRITEABLECONST ON}」を使用すると、変更可能な定数になります。

procedure F;
const
{$WRITEABLECONST ON}
  foo: Integer = 0;
{$WRITEABLECONST OFF}
begin
  foo := foo + 1;
  WriteLn(foo);
end;

サンプルアプリケーションとして、次のようなコンソールアプリケーションを作成します。

program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

procedure F;
const
{$WRITEABLECONST ON}
  foo: Integer = 0;
{$WRITEABLECONST OFF}
begin
  foo := foo + 1;
  WriteLn(foo);
end;

begin
  F;
  F;
  F;
end.

実行結果は次のようになります。

1
2
3

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください