1行あたりの列数が異なるデータを入力するには?


せつ  2004-10-28 04:43:13  No: 117224

テキストファイルから,以下のような並びの数値データを
入力したいのですが,うまく読めません.アドバイス,
よろしくお願い致します.(VB6.0を使用しています)

1
DATA(1,1)  DATA(1,2)  DATA(1,3), ..., DATA(1,n)
2
DATA(2,1)  DATA(2,2)  DATA(2,3), ..., DATA(2,n)

ちなみに,私の作成したコードは以下の通りです.

FOR I = 1 TO m
    INPUT #1, NO(I)

    FOR J = 1 TO n
        INPUT #1, DATA(I,J)
    NEXT J
NEXT I

ここで,mは行数の半分,また入力用テキストファイルの
番号は1です.

1行あたりのデータ数が少ない場合にはうまくいきますが,
数千個の場合は読み込めません.宣言した配列の大きさに
ミスはありませんし,メモリ容量にも問題はありません.

ただし,「ファイルにこれ以上データがありません。」という
実行時エラー'62'が出ます.恐らく,データの総数とFORループの
繰り返しの数が一致していないからだと思います.

お手数をおかけしますが,解決方法をご存知の方,教えてください.


ABC  2004-10-28 08:50:53  No: 117225

コードからは問題が見受けられませんので
データの方もチェックした方がいいかもしれません。
読み込んだ内容をDebug.Printで表示させればどこで
ずれたのか分かると思います。


葉月  2004-10-28 18:14:08  No: 117226

インプットってそもそも行単位で読み込みじゃなかったでしたっけ?
読み込んだ内容を第二引数?に格納するとかそんなんだった気がするのですが・・・

テキストファイルからただ読み込むのであれば
インプットで行を読み込む
区切り文字がはっきりしてるなら、Split関数で分割し
配列項目にぶち込む
UBOUND関数で配列などを取得すればループでまわせる

のようなことをすれば2次元配列でもなんでも使ってもらえれば
できるんじゃないかな?
何回ループしているか、そのインプットで何を読んでいるのかを
まずはDebug.Printしてください
そうすればなぜデータがないエラーが出るかわかると思います

多分10行で1列と10列のデータが交互に入っているデータだとしたら
10*10*1で100行分ループしているように思えるのですが・・・
当然11回目からエラーになります・・・


葉月  2004-10-28 18:15:39  No: 117227

10列*5行+1列*5行で55回のループですね・・・


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

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






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