|
出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
Topに戻る
掲示板に戻る
検索
削除
管理者
|
![]()
無題
あるるさん
[2001/12/20 20:20:10]
[1297]
|
配列について
あるるさん
[2001/12/20 20:21:31]
[1298]
良い子の掛け算
北岳さん
[2001/12/21 9:51:30]
[1299]
Re:良い子の掛け算
北岳さん
[2001/12/21 10:03:04]
[1300]
遅くなってすいません…
あるるさん
[2001/12/24 4:37:10]
[1308]
使ってみました
あるるさん
[2001/12/24 5:08:28]
[1309]
Redim Preserve
北岳さん
[2001/12/25 9:26:41]
[1312]
メモリーリーク?
北岳さん
[2001/12/27 13:35:27]
[1322]
|
| [1297] 無題 |
| 投稿者:あるるさん 2001/12/20 20:20:10 |
| はじめまして、始めて1ヶ月足らずの初心者です。 いつも参考にさせてもらっています。 早速質問なのですが、配列の範囲についてです。 Dim Array(10) というふうに宣言したのですが、 配列の数(10)を宣言せずに、 つまり可変な配列数を宣言することは出来ないのでしょうか? 更に使っている配列以外は存在しないようにしたいのです。 用途によって配列数が変えたいのです。 簡単な質問ですが、よろしくお願いします。 |
| [1298] 配列について |
| 投稿者:あるるさん 2001/12/20 20:21:31 |
| 題名が消えてしまいました。。。 すいません。。。 |
| [1299] 良い子の掛け算 |
| 投稿者:北岳さん 2001/12/21 9:51:30 |
| 配列の動的宣言は、dim A()、redim A(m,n)の組み合わせです。 削除は Erase A です。 下の例で、r=9,c=9 なら普通の九九ですが、 これからの良い子は、できれば九十九十の表を暗記しましょう。 ==================================== <html><body> <SPAN STYLE="color:red; font-size:20pt; width:70%; filter:Shadow()"> 良い子の掛け算 </SPAN> <% Dim A() '配列の動的宣言 r=90 c=90 Redim A(r,c) '動的配列変数割当 for i=1 to r for j=1 to c A(i,j)=i*j next next %> <table border=1> <tr bgcolor="yellow"><td> </td><% for j=1 to c %><td><%= j %></td><% next %></tr> <% for i=1 to r %> <tr><td bgcolor="yellow"><%= i %></td> <% for j=1 to c %> <td bgcolor="#e0ffff"><%= A(i,j) %></td> <% next %></tr> <% next erase A '配列削除、メモリ開放 %> </table></body></html> |
| [1300] Re:良い子の掛け算 |
| 投稿者:北岳さん 2001/12/21 10:03:04 |
| ソースが1行おきになってしまったので、 <td bgcolor="#e0ffff"><%= A(i,j) %></td> <% next %></tr> を、<% の位置だけ変えて、 <td bgcolor="#e0ffff"><%= A(i,j) %></td><% next %></tr> に訂正願います。 画面は変化ないですが、ソースの空白行が消えます。 |
| [1308] 遅くなってすいません… |
| 投稿者:あるるさん 2001/12/24 4:37:10 |
| お礼が遅くなって申し訳ございません。。。 開放という手があるんですか。 非常に勉強になりました。 早速使わせて頂きます。 これからも宜しくお願いします。 |
| [1309] 使ってみました |
| 投稿者:あるるさん 2001/12/24 5:08:28 |
| が、メモリ開放するとすべて消えてしまってました… どうやら、説明不足でした。 配列を例えば10個使ったとして、 それは維持しておいて、他の何も入っていない配列は削除する、 そう言いたかったのです。 しかし上の方法を参考にして少し変えてみれば、 (配列に値を入れる際に変数を増やしていき、 それを配列の範囲にする) 開放を使わずに配列を消す事が出来ました。 ありがとうございました。 |
| [1312] Redim Preserve |
| 投稿者:北岳さん 2001/12/25 9:26:41 |
| > 配列を例えば10個使ったとして、 > それは維持しておいて、他の何も入っていない配列は削除する、 > そう言いたかったのです。 これには Redim Preserve が使えます。 以下をお試し下さい。 ----------------------------- <html><body> <p>初期設定(要素数=58) <% dim x() redim x(58) for i=1 to 58 x(i)=chr(64+i) next '--表示 for i=1 to 58 %><br>(<%= i %>) <%= x(i) %><% next %><p>再設定(要素数=26 に縮減)</p><% redim preserve x(26) '--再表示 for i=1 to 26 %><br>(<%= i %>) <%= x(i) %><% next %><p> Redim Preserve の結果、 <br>27番目以降はどうなった?</p><% redim preserve x(58) '--再々表示 for i=1 to 58 %><br>(<%= i %>) <%= x(i) %><% next %> <p>Redim Preserve により、縮減された範囲のメモリが節約できます。 <br>当然、再拡張しても復活しません。</p> </body></html> |
| [1322] メモリーリーク? |
| 投稿者:北岳さん 2001/12/27 13:35:27 |
| 念のため追記しておきます。 動的配列を Redim、Redim Preserve で運用した場合、各ASPの最後で明示的に配列を Erase 配列名 で削除しておくほうが無難と思います。 VBScript で起きるかどうか知りませんが、もともと VB の兄弟なので、 VB で有名なメモリーリークが起きるかもしれません。 (確認していませんが、むしろ必ず起きる気がします。) メモリーリーク: 確保した配列領域内だけでやりくりしないで、どんどん新しい領域をメモリー内に確保して行き、実行終了まで手離さない現象。 これが起きたらサーバの実行(応答)速度が落ちてくるはずです。 (なお昔VBで exeが終わった後でもメモリーが確保されたままだったような気がしましたが、これは気のせいかも。) |
|
TreeBBS For ASP V.0.1.3 |