- ベストアンサー
ループの最大に変数の値を入れたい
基本的なことですみません。 10回繰り返し処理するにあたって i=1 Do While i <= 10 繰り返し処理 i=i+1 Loop とすると思います。 この10のところに変数の値を入れたいのですが 単純に i=1 a=10 Do While i <= a とするとエラーとなってしまいます。。。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3の方の言われる通りのようです。 a=1 b="10" としてテストしてみると、 無限ループになります。 Do While a <= "10" とかしてみると 数値として比較されるみたいで、 変数だと 変数の数値<変数の文字列 が常に真になるようです。 一種のバグのようなものなのかもしれません。 (文字列と数値を比較してはいけないということなんでしょうけど)
その他の回答 (3)
- Kuppycat
- ベストアンサー率50% (109/216)
cntの内容が文字扱いになってませんか? b=CInt(Request.Cookies("DATA")) もしくは b=Request.Cookies("DATA") b=Cint(b) と、数値型に変換してみてください。
お礼
数値型のして方法が間違ってました。 上記方法で確認してみます。 ありがとうございました!
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>無限にループを繰り返している模様 これで、無限ループになるとすると 「処理」の部分でiの値が変更されているかcntの値が変更されている あるいは、「処理」自体の中に、無限ループに陥るような処理がある かなあと思います。 とりあえず、 (i,cntで)本当に無限ループしているか、 ループの最後の部分で cntやiの値をトレースしてみてはいかがでしょうか
補足
私のぎこちない質問説明ながら 度々ご回答ありがとうございます。 トレースをしたところHTML上、何も表示されない状態でした(IE読み込み中、dllhost.exeによるCPU100%負荷発生)。 目的はこんな感じです。 <%@LANGUAGE=VBScript%> <% Response.Cookies("DATA") = 10 a=1 b=Request.Cookies("DATA") Do While a <= b Response.Write a &" = "& Request.Cookies("DATA") &"<br>" a = a+1 Loop %> 変数bに数値を入れれば意図通りの出力となりますが、 自分の環境ですとこの場合出力不可となります。 他の環境では上記内容で問題ないんですかね? クッキーの動作についてはその他処理で問題無く動作しているため、ブラウザ設定にも起因しないようです。。。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
普通は、エラーにはならないと思います。 どんなエラーメッセージになりますか?
補足
すみません、詳細は制限変数にクッキーで取得した値を入れてます。エラーについてはブラウザ上何も表示が無く、無限にループを繰り返している模様です(CPUが100%になってしまう)。 cnt = Request.Cookies("CNT") Do While i <= cnt 処理 i = i+1 Loop ・Request.Cookies("CNT")の値はカウンターとして数値1以上が入ります。 ・Response.Write cnt とすると目的の値が表示されます。 考えられる点はcntが文字列(整数値)として取り込まれてないんだなーと思い、Dim cnt As Integerと前部に記述しましたが上手く行きません。 とほほ・・。
お礼
目的がFor文でも可能であったため、下記の 方法で対応しました。 cnt=10 For i = 1 To cnt 処理 Next Forの場合は必ず数値と判断してくれるようですね。 いろいろとありがとうございました!