Constで定義している定数の内容は変更できますか?
HeaderControlのSectionを動的に作成しています。
Const
HdrSecDivision = 0;
HdrSecSetUp = 1;
begin
Case HeaderControl1.Sections.index of
HdrSecDivision : 処理
HdrSecSetUp : 処理
の時にSectionのindexを変更した時に、それに対応してCaseに対応している定数の内容を変更したいのですがIntegerで宣言した整数値では、Case文の部分で定数式を指定してくださいとエラーがでます。
やり方がありましたらご教授ください。
var
HdrSecDivision,HdrSecSetUp: integer;
begin
case HeaderControl1.Sections.index of
0: HdrSecDivision:=1;
1: HdrSecSetUp:= 5;
end;
end;
こんなのではダメでしょうか?
値が変えられたら「定数」じゃないですよ^^;
仕様を見直した方がよろしいかと思います。
どうしても変えたい場合は、実行時に定数を使用しているアドレスを取得し、書き換えてやればよいかと思います。
定数を使用している箇所全てです。単純に定数名から得られるアドレスではダメです。
定数は、コンパイル時点で値に置き換えられている場合があるためです。
やはり変更は無理ですよね^^;
ありがとうございます!!
何か違う方法を見つけてみます!!
型付き定数というのがありますよ。これは変更可能です。
>型付き定数というのがありますよ。これは変更可能です。
Const
HdrSecDivision : Integer 0;
HdrSecSetUp : Integer 1;
のような、事でしょうか?
これでやったのですが、これでも定数式を入れてくださいと言われエラーが出ます。
IF文での分岐を使って解決したので、処理が汚くなってしまいましたが^^;
大丈夫だと思いますwありがとうございますw
ちなみに
のり=初心者ではなく
のりさんは、学友ですw
詳しく早く教えてくださる方が多いと聞きこのサイトを教えてもらいましたw
型付き変数ですが,
>Const
> HdrSecDivision : Integer 0;
> HdrSecSetUp : Integer 1;
= が抜けています.
HdrSecDivision : Integer=0;
HdrSecSetUp : Integer=1;
また場合によっては,コンパイルのオプションに{$J+}を指定する
必要があります.
ま、いずれにしても case 文のケースリストには使えないわけだが
まっ,元々,
>値が変えられたら「定数」じゃないですよ^^;
>仕様を見直した方がよろしいかと思います。
ということです.定数は定数だから定数なのであって
変化する値は変数ですからね.
ツイート | ![]() |