14歳の自分に衝撃の事実を告げてください

VB6でループさせて配列に値を入れて、計算させて最終的に求めたい値をRとします。そのときループで繰り返すためか同じ配列に値を入れてどんどん値がでかくなりRの値がおかしくなってしまいます;
おそらく問題は一回前に入れた配列がそのままのこってしまってるからなのだと思うのですが;
配列の中の値をクリアする方法はないものでしょうか?
一応、配列=0として初期化しようとしても値は変わらず前のが残ったままになってしまっています;
どなたかわかる方いらっしゃいましたらご回答宜しくお願いします

その他何かいい方法があればそれも教えていただけたらと思います

A 回答 (2件)

Eraceステートメントを使用



  Dim a() as Long
  Dim s(100) as String
  Dim x() as Long

  Erase a     ’要素が0になる
  Erase s     ’要素が""になる

  Redim x(100) as Long

  Erase x      ’メモリを解放

注)VB2005の場合は動作が異なるので注意して下さい。
    • good
    • 3
この回答へのお礼

さっそくのお返事ありがとうございます<(_ _)>
なるほどEraseを使えばいいんですね
2005とは動作が異なるという貴重なアドバイス
本当にありがとうございます
don_goさんのアドバイスを参考に再度挑戦してみたいと思います
お忙しい中回答ありがとうございます<(_ _)>

お礼日時:2008/02/11 22:09

sub main()


call tekito(Rの配列の大きさ,,,)
IF (サイド計算する場合) then
call tekito(Rの配列の大きさ,,,)
end if
end

sub tekito(Rの配列の大きさ,,,)
dim R()
redim R(Rの配列の大きさ)

call 配列Rの中身の設定(R())
call 配列Rの中身の計算
IF (初期化が必要な場合) then
redim R(Rの配列の大きさ)
call 配列Rの中身の設定(R())
call 配列Rの中身の計算
end if
end sub

ローカル変数として設定して、初期化し、実行して、サブルーチン終了でローカル変数を破棄する破棄する
方法と
redim を使う方法

があります。dim resum(でしたか)は配列宣言が定数である必要があるので、汎用を考えると使えません。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます<(_ _)>
なるほどローカル変数としてあとはコール文をうまく使っていく方法がだぶらなくて安全そうですね
注意事項まで書いていただきありがとうございます
これを参考に頑張ってみたいと思います
お忙しい中ご回答いただきましてありがとうございます<(_ _)>

お礼日時:2008/02/11 22:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A