for文について

解決


のびた  2002-12-31 21:51:18  No: 2483  IP: 192.*.*.*

for文では値が一つ増減するだけしかしませんが、他はできないのでしょうか?
40づつ値を増やしていきたいのですがどうもうまくいきません。
var i:Integer;
     t:Integer;
 begin  t := 100;
          for i := t downto 13 do
          begin ShowMessage(IntToStr(i));
                i := i-39;
          end;
とやればできるかと思いましたが、「ループ制御変数に代入されました」と
エラーがでました。
ループを作ればできるのでしょうか?残念ながら初心者の私にはわかりません。
ご存知の方ご享受願えないでしょうか?

編集 削除
Kenji  2003-01-01 00:17:59  No: 2484  IP: 192.*.*.*

突然ですが、あけおめです。
Delphiでは制御用の変数がループ内では代入できないようになっているため、
別の変数を用意してやる必要があります。

var
  j: Integer; // <-追加

...

for i := t downto 13 do
begin
  j := i * 40; // 40増やす(この場合減らす?)
end;

として、i*40の値を計算してやれば40ずつ増えた値が得られます

編集 削除
にしの  2003-01-01 01:23:55  No: 2485  IP: 192.*.*.*

あけましておめでとうございます。

forを使わずにwhileを使えば、どんな風にでもカウンタを持つことができます。

編集 削除
のびた  2003-01-01 21:50:26  No: 2486  IP: 192.*.*.*

明けましておめでとうございます。
Kenjiさん、にしのさんご解答ありがとうございます。
方法はわかったのですがあと一つだけ疑問があります。
それは、i := 10  to 83 //←これを10ずつ増やすとしたら
90になった時点で終了するのでしょうか?
またwhileで=を使うことはできるのでしょうか?普段は不等号しか
使っているのを見たことないものですから。whileで=が使えるならば
問題は解決するのですがどうなのでしょうか?

編集 削除
にしの  2003-01-01 23:38:12  No: 2487  IP: 192.*.*.*

whileをヘルプで調べてみてください。
その上での質問であれば、等号、不等号の演算が返す値は、どちらもbooleanです。

編集 削除
のびた  2003-01-02 16:17:16  No: 2488  IP: 192.*.*.*

色々考えた結果repeatを使ってやってみることにしました。
低レベルな質問に付き合っていただいたにしのさん、Kenjiさん、
どうもありがとうございました。

編集 削除