定数の内容は変更できますか?

解決


初心者  2004-01-09 05:45:17  No: 6609

Constで定義している定数の内容は変更できますか?
  HeaderControlのSectionを動的に作成しています。

Const
  HdrSecDivision = 0;
  HdrSecSetUp    = 1;

begin
  Case HeaderControl1.Sections.index of
   HdrSecDivision  : 処理
   HdrSecSetUp     : 処理
  

  の時にSectionのindexを変更した時に、それに対応してCaseに対応している定数の内容を変更したいのですがIntegerで宣言した整数値では、Case文の部分で定数式を指定してくださいとエラーがでます。
 やり方がありましたらご教授ください。


Q  2004-01-09 07:31:29  No: 6610

var
  HdrSecDivision,HdrSecSetUp: integer;

begin
  case HeaderControl1.Sections.index of
   0: HdrSecDivision:=1;
   1: HdrSecSetUp:= 5;
  end;
end;

こんなのではダメでしょうか?


にしの  2004-01-09 07:40:30  No: 6611

値が変えられたら「定数」じゃないですよ^^;
仕様を見直した方がよろしいかと思います。

どうしても変えたい場合は、実行時に定数を使用しているアドレスを取得し、書き換えてやればよいかと思います。
定数を使用している箇所全てです。単純に定数名から得られるアドレスではダメです。
定数は、コンパイル時点で値に置き換えられている場合があるためです。


初心者  2004-01-09 18:46:43  No: 6612

やはり変更は無理ですよね^^;
ありがとうございます!!
何か違う方法を見つけてみます!!


HOta  2004-01-09 20:01:57  No: 6613

型付き定数というのがありますよ。これは変更可能です。


のり  2004-01-12 03:04:06  No: 6614

>型付き定数というのがありますよ。これは変更可能です。

Const
  HdrSecDivision : Integer 0;
  HdrSecSetUp    : Integer 1;

のような、事でしょうか?
これでやったのですが、これでも定数式を入れてくださいと言われエラーが出ます。
IF文での分岐を使って解決したので、処理が汚くなってしまいましたが^^;
大丈夫だと思いますwありがとうございますw


初心者  2004-01-12 03:07:12  No: 6615

ちなみに
  
  のり=初心者ではなく

  のりさんは、学友ですw

  詳しく早く教えてくださる方が多いと聞きこのサイトを教えてもらいましたw


Mr.XRAY  URL  2004-01-12 06:13:47  No: 6616

型付き変数ですが,

>Const
>  HdrSecDivision : Integer 0;
>  HdrSecSetUp    : Integer 1;

= が抜けています.

 HdrSecDivision : Integer=0;
 HdrSecSetUp    : Integer=1;

また場合によっては,コンパイルのオプションに{$J+}を指定する
必要があります.


jok  2004-01-12 07:23:23  No: 6617

ま、いずれにしても case 文のケースリストには使えないわけだが


Mr.XRAY  URL  2004-01-12 08:21:09  No: 6618

まっ,元々,

>値が変えられたら「定数」じゃないですよ^^;
>仕様を見直した方がよろしいかと思います。

ということです.定数は定数だから定数なのであって
変化する値は変数ですからね.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加