二つ配列を比較して、片方の配列の番号を取得するには?


さや  2005-01-06 05:59:38  No: 118610

二つのデータを比較して、同じだった場合、片方のデータの配列番号を取得するという処理がしたいのですがうまくいきません。
Khpic()には80個の文字データ、SkeyD()には5〜10個の文字データがはいっています。MaxはKhpic()のデータ数、sMaxはSkeyD()データ数です。
どこが間違っているのか自分では良くわかりません。

For I = 1 To Max 
 For K = 1 To sMax 
  If Khpic(I) = SkeyD(K) Then  
   Fnum(J) = I
   J = J + 1
  End If
 Next K
Next I


いな  2005-01-06 06:42:25  No: 118611

>>処理がしたいのですがうまくいきません。

何が、どううまくいかないのかもうチョット知りたいところですが、
ひとまず、このサンプルでは、"インデックスが有効範囲にありません。"
の実行時エラーとなってしまいませんか?

  If Khpic(I) = SkeyD(K) Then  
   Fnum(J) = I
   J = J + 1
  End If

の部分を

  If Khpic(I) = SkeyD(K) Then  
   Redim Preserve Fnum(J)
   Fnum(J) = I
   J = J + 1
  End If

とするとか?


さや  2005-01-06 07:41:53  No: 118612

いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?


さや  2005-01-06 07:41:53  No: 118613

いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?


さや  2005-01-06 07:41:57  No: 118614

いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?


さや  2005-01-06 07:42:29  No: 118615

いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?


さや  2005-01-06 07:42:58  No: 118616

いなさん、回答ありがとうございます。
確かに、"インデックスが有効範囲にありません。"
となります。回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
For文の使い方が間違っているのでしょうか?


特攻隊長まるるう  2005-01-06 18:04:13  No: 118617

環境は[VB6.0]でいいでしょうか?[VB.NET]の場合とコードが違います。
質問する時点で明記して下さい。

>回答にあったようにしてみたのですが、”配列はすでに宣言されています。”となってしまいます。
ヘルプを『配列は既に宣言されています』のキーワードで検索して下さい。
(漢字もエラーの通りで検索して下さい)

>"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?
ヘルプを『インデックスが有効範囲にありません』のキーワードで検索して
下さい。

>どこが間違っているのか自分では良くわかりません。
1行ずつステップ実行して自分の書いたコードがどういう動き
をしてるか確かめないと分かるものではありません。

自分ができる事を質問しないようにして下さい。


特攻隊長まるるう  2005-01-06 18:09:17  No: 118618

ああ、あと、常識だと思うので既にやっているとは思いますが、
管理人さんにメールして重複投稿を削除してもらって下さい。


いな  2005-01-06 18:40:33  No: 118619

"インデックスが有効範囲にありません。"となる原因は何なのでしょうか?

配列のインデックス(要素数)を超えたものを参照しようとした場合に発生します。

先のサンプルの場合、
インデックス(J)をインクリメント(+1)しているのにかかわらず、
配列のインデックスはRedimされていないため、
いずれ破綻するだろうと思ったわけです。


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




  


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