typeで宣言した処理について

解決


GEGE  2009-06-01 09:27:47  No: 34590  IP: 192.*.*.*

typeについて教えてください。
type THoge = ( hoge1,hoge2,hoge3,hoge4);

Fuse :THoge;

などとかいて
Fuse:= hoge1;  や
if Fuse = hoge2 then
などに利用しています。


そこで質問ですが、hoge1〜hoge4は文字列でも数値でもないため、扱いが難しいです。
実は  
if Fuse=hoge3 then
  Fuse:= hoge3 -1;  ※1

見たいなhoge3の一個前の状態に戻すようなことをしたいと考えています。
※1の所でFuse:=hoge2としてしまえばよいという話ですが、色々な意味で使用したいのであくまでも「hoge3 -1」というやり方でやりたいです。
何か良い方法教えてください。

よろしくお願いします。

編集 削除
ttt  2009-06-01 10:17:14  No: 34591  IP: 192.*.*.*

typeと言ってしまうと表す幅が広いので……そういうのは順序型の一種で「列挙型」と言います。
順序型で一つ前や後ろの値を取り出すのはPredとSuccですね。(状況によってはIncやDecも使えますが)
if Fuse = hoge3 then Fuse = Pred(hoge3);
または
if Fuse = hoge3 then Dec(Fuse);

編集 削除
GEGE  2009-06-01 11:41:16  No: 34592  IP: 192.*.*.*

列挙型ですね…。
Predというのを使えばよいのですね。
わかりましたtttさんありがとうございます。

編集 削除