for文について

解決


のびた  2003-01-01 06:51:18  No: 2483

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 09:17:59  No: 2484

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

var
  j: Integer; // <-追加

...

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

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


にしの  2003-01-01 10:23:55  No: 2485

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

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


のびた  2003-01-02 06:50:26  No: 2486

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


にしの  2003-01-02 08:38:12  No: 2487

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


のびた  2003-01-03 01:17:16  No: 2488

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


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

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






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