■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#34824-0Do...Loopステートメントについてコウジ2000-12-06(水) 16:54
     #34826-0RE#34824:Do...LoopステートメントについてLESIA2000-12-06(水) 17:33
#34824-0
Do...Loopステートメントについて
こんにちは。以下のようなy座標だけのデータをx,y座標になるようにして、
それぞれの値を配列に格納するプログラムを作成したのですが、最初の一行目
だけが変換されて二行目以降の値が61・62・63とそのままの値になってしまうのです。
どの部分が間違っているのかどなたかご指摘をお願いします。

--------------------------------------------------------------------
もとのデータ    ⇒  (8192行目まで20.5000から0.0025ずつ減算していく)     
66             ⇒           20.4975,66 
61              ⇒          20.4950,61 
62             ⇒          20.4925,62 
34              ⇒           20,4900,34 
↓                             ↓ 
[EOF]            [EOF]  
--------------------------------------------------------------------
Dim j As Long
Dim Count As Long
Dim Cut As Long
Dim Buf As String
Dim XData As String
Dim BufData() As String

Redim Preserve TSpc.Data(P90) As Single  'TSpc.Data配列をP90分確保
ReDim Preserve BufData(P90) As String    'BufData配列をP90分確保

Open FileName For Input As #1      '渡されたファイルをオープン
Do While Not EOF(1)              'ファイルの終わり(EOF)までループ
   Line Input #1, Buf             'ファイルから1行分読み込みBufへ格納
        j = j + 1
        XData = 20.5 - 0.0025 * j
        Buf = XData + Chr(44) + Buf
         
        Cut = InStr(1, Buf, ",", vbTextCompare)  'カンマ(,)の位置を検索
        BufData(Count) = Left(Buf, Cut - 1)      'カンマの前まで切り出しBufDataへ格納
      
        TSpc.Data(Count) = CSng(Right(Buf, Len(Buf) - Cut))
        'カンマ以降の文字列をSingle型に変換してTspc.Dataへ格納
 
        Count = Count + 1
        'カウンタを1つ進める

    Loop            'ループの終了
  Close #1          'ファイルのクローズ
#34826-0
RE#34824:Do...Loopステートメントについて
回答になるかはわかりませんが、気になった点をひとつ・・・。

> Buf = XData + Chr(44) + Buf
  ここでxとyをカンマでつないでいるのに
         
> Cut = InStr(1, Buf, ",", vbTextCompare)  'カンマ(,)の位置を検索
> BufData(Count) = Left(Buf, Cut - 1)      'カンマの前まで切り出しBufDataへ格納
> TSpc.Data(Count) = CSng(Right(Buf, Len(Buf) - Cut))
  どうして、ここでまたカンマを検索してわけているのでしょうか?

Buf = XData + Chr(44) + Buf
Cut = InStr(1, Buf, ",", vbTextCompare)
の2行を削除して
BufData(Count) = XData
TSpc.Data(Count) = Buf
でいいのでは?
このページと関連する記事:
#33599-0ファイルの読み込みについて2000-11-16(木) 18:21
#16318-0配列について2001-05-25(金) 22:57
#20914-02つの質問。2002-05-24(金) 00:47
#22535-0ファイルの読み込み2001-08-20(月) 23:12
#21265-0入力したデータをカンマごとに区切って変数に入れる!?2001-06-08(金) 13:09
#5192-0テキストファイルからデータベースに取り込みたい2000-01-21(金) 14:24
#586-2ファイルのライン数を一定の範囲でまとめて処理したい。2003-12-24(水) 17:55
#508-3テキストファイルを一気に読み込みたい。2003-12-05(金) 20:54
#971-01/10秒、1/100秒の取得について1999-08-19(木) 15:44
#21351-0読み出しの時間2001-06-14(木) 07:00
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)