■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#2661-0RE:すぺーすを含んだデータの読み込みtomo1999-10-08(金) 11:06
     #2662-0RE#2661:RE:すぺーすを含んだデータの読み込み匿名26621999-10-08(金) 12:01
     #2700-0RE#2662:RE:すぺーすを含んだデータの読み込みtomo1999-10-09(土) 00:03
     #2702-0RE#2700:RE:すぺーすを含んだデータの読み込みとんがらし1999-10-09(土) 03:04
     #2788-0RE#2702:すぺーすを含んだデータの読み込みtomo1999-10-12(火) 19:15
     #2791-0RE#2788:すぺーすを含んだデータの読み込みとんがらし1999-10-12(火) 21:07
     #2792-0RE#2791:すぺーすを含んだデータの読み込みとんがらし1999-10-12(火) 21:10
     #2794-0RE#2791:すぺーすを含んだデータの読み込み匿名27941999-10-12(火) 22:40
     #2796-0RE#2794:すぺーすを含んだデータの読み込みU-Root-Y1999-10-12(火) 23:31
     #2799-0RE#2788:すぺーすを含んだデータの読み込み魔界の仮面弁士1999-10-13(水) 02:21
     #2842-0RE#2791:すぺーすを含んだデータの読み込みtomo1999-10-13(水) 15:45
     #2864-0RE#2842:すぺーすを含んだデータの読み込みto 久米1999-10-14(木) 09:22
     #2871-0RE#2864:すぺーすを含んだデータの読み込みtomo1999-10-14(木) 12:10
#2661-0
RE:すぺーすを含んだデータの読み込み
> 早速ですが2行のデータをx()、y()の配列に読み込ませたいのですが
> 元のデータがスペースで区切ってある為、読み込ませ方が分かりません

「区切りのスペースの前がx()に入れるデータ、スペースの後ろがy()に入れるデータ」
ということが分かると思います。
あとは、Instr、Trimをヘルプで参照してみてください。
※「16320  1500」というデータを「16320」と「1500」に分ける場合に、
 手作業だったらどうするかを考えると、うまくいきますよ。

のびさんRESありがとうございます。
こんなに早く回答が来るとはびっくりしました
お礼が送れて申し訳ありません

ということで早速やってみました
こんな感じです
        Do While Not EOF(1)
            i = i+1
            Line Input #1, A
            A = Trim(A)
            Number1 = InStr(A, " ")
            Number2 = Len(A)
            k = Number2 - Number1
                        
            X(i) = Left(A, Number1)
            X(i) = Trim(X(i))
            
            Y(i) = Right(A, k)
            Y(i) = Trim(Y(i))
    Loop
多分うまく行ってると思います
なんかものすごく力技になってしまったような気も・・・
#2662-0
RE#2661:RE:すぺーすを含んだデータの読み込み
> 早速ですが2行のデータをx()、y()の配列に読み込ませたいのですが
> 元のデータがスペースで区切ってある為、読み込ませ方が分かりません

Split関数を使えませんか?
この関数は、VB6だけでしたっけ?
#2700-0
RE#2662:RE:すぺーすを含んだデータの読み込み
> Split関数を使えませんか?
> この関数は、VB6だけでしたっけ?

一応僕が使っているのはVB6です
VB6のヘルプのSplit関数を見てみましたが書いてある意味がよくわかりません
出来れば具体例なんかがあったらうれしいんですが

質問を返してすいません
#2702-0
RE#2700:RE:すぺーすを含んだデータの読み込み
> 一応僕が使っているのはVB6です
> VB6のヘルプのSplit関数を見てみましたが書いてある意味がよくわかりません
> 出来れば具体例なんかがあったらうれしいんですが

そんなに難しいこと書いてましたっけ?
だからヘルプにも使用例がないんだと思うんですけど...

Split関数って、こんなのですよね?(手元にVB6がないので記憶 Only)

RetArray = Split(expression[, delimiter[, count[, compare]]])

で、
  RetArray -- 関数戻り値となる1次の動的配列
         予め、Dimステートメントなどで要素数を定義しない(「()だけの」)配列を
         宣言しておかなければならない。

expression -- 分割対象となる文字列(変数)

 delimiter -- 区切り文字列(今回の場合は、Space$(1)や、" "など。未設定の時は「""」)

     count -- 分割数(未設定の場合は対象文字列の全て分割する)

   compare -- 文字列比較方法(省略時は原則として、バイナリ比較)
        これについては、Instr関数や、StrComp関数にも説明があるはず。

普通は、Split関数の第1、第2パラメータまでしか設定しないでしょうね。

あとは試行錯誤でやってみて下さいな。 大したことないですから。

#VB標準関数の使い方を訊かれると、かえってどう答えて良いのか困る。
#2788-0
RE#2702:すぺーすを含んだデータの読み込み
> Split関数って、こんなのですよね?(手元にVB6がないので記憶 Only)

とんがらしさん親切に説明していただいてありがとうございます
とりあえずやってみましたが、いまいち分かりません。
申し訳ないですがもう少し付き合ってください

Private Sub Command1_Click()
    I = 0                                   '初期値の設定
    DataX = ""
    DataY = ""
    WrapCharacter = Chr(13) & Chr(10)
    Open FilePath For Input As #1           'ファイルを開く
        Do While Not EOF(1)                 '配列にデータを入れる
            I = I + 1
            Line Input #1, Iptline
            X(I) = Split(Iptline, " ", , vbTextCompare)        ←A
            Y(I) = ?                                           ←B
'            AddDataX (X(I))
            If I = 1 Then
                DataX = X(I) & WrapCharacter
            Else
                DataX = DataX & X(I) & WrapCharacter
            End If
        Loop
    Close #1
End Sub

矢印Aがうまく行ってないようなんです
それと矢印Bをどうすれば良いのか分かりません

すいませんがどうか教えてください
#2791-0
RE#2788:すぺーすを含んだデータの読み込み
> > Split関数って、こんなのですよね?(手元にVB6がないので記憶 Only)
> 
>         Do While Not EOF(1)                 '配列にデータを入れる
>             I = I + 1
>             Line Input #1, Iptline
>             X(I) = Split(Iptline, " ", , vbTextCompare)        ←A
>             Y(I) = ?                                           ←B

だぁかぁらぁ、Split関数の戻り値は配列全体何だってばぁ。
lptlineから、" "で分割した結果を格納しないといけないんだから。

つまり、X = Split(Iptline, " ", , vbTextCompare)にしないと駄目なの。

で、そのあとに

'編集文字列初期化
DataX = ""

For I = 0 To UBound(X)     'UBound(X)は本当は別変数に格納した方が良い
    '各文字を結合
    DataX = DataX & X(I) & vbCrLf    'Chr$(13) & Chr$(10)はVBに定数がある
                                     'WrapCharacterは必要なし
Next

とすりゃぁ良いのではないかと。

あと、念のため訊きますけど、最後に vbTextCompareを設定してるってことは
全角スペースも切り出し対象なんですね?

なお、Bの方は 配列Yの使用意図が見えないのでパス。

人にソースを見せるのにコメントが無いってのは頂けませんねぇ。
少なくとも何がしたいのかということは明確に書くべきじゃぁないのかなぁ。

コメントは、処理が簡単か否かで付ける/付けないが決まるものではないんでね。
#2792-0
RE#2791:すぺーすを含んだデータの読み込み
もしかしてファイルの中を全部繋げるんかぃ?

もしそうなら
> '編集文字列初期化
> DataX = ""
は、切り出した後じゃなくて、Do While Not〜の前で行うべし。

ちょっと、試行錯誤が足りんな。
#2794-0
RE#2791:すぺーすを含んだデータの読み込み
> あと、念のため訊きますけど、最後に vbTextCompareを設定してるってことは
> 全角スペースも切り出し対象なんですね?

?
#2796-0
RE#2794:すぺーすを含んだデータの読み込み
横から失礼します。
> > あと、念のため訊きますけど、最後に vbTextCompareを設定してるってことは
> > 全角スペースも切り出し対象なんですね?
> 
> ?
って・・・
ヘルプの「Option Compare ステートメント」の解説を読んでみてください。
#2799-0
RE#2788:すぺーすを含んだデータの読み込み
# ちゃちゃ

>         Do While Not EOF(1)                 '配列にデータを入れる
確かにVBのサンプルだと、この書き方をしているのは多いですけど…。

まずファイル番号は、「1」決め打ちでは無く、
FreeFile関数で取得した値を整数型変数に取り、
その値を使うようなコードを心がけたほうが良いと思いますよ。

それと、Do While Not 〜 などと書くのであれば、Do Until 〜 の方がすっきりするのでは?

# まぁ、コーディングの仕方なんて、人によって違うので、
# この程度のちゃちゃであれば、聞き流してもらってもかまいませんが。(^^;
#2842-0
RE#2791:すぺーすを含んだデータの読み込み
> > > Split関数って、こんなのですよね?(手元にVB6がないので記憶 Only)

とんがらしさん、何度もすいません
そしてU-Root-Y さん、魔界の仮面弁士 さんもいろいろ指摘していただいて
大変参考になります

物分りが悪いもので。とりあえずまた書いてみました
こういうことでしょうか?
----------------------------------------------------------------------------------
イベントプロシージャ:
 Private Sub cmdMatrix_Click()
     Open FilePath For Input As #1           'ファイルを開く
     DataX = ""
         Do Until EOF(1)                     '配列にデータを入れる 
             Line Input #1, Iptline
             X = Split(Iptline, " ")
         Loop
             
         For I = 0 To UBound(X)              'UBound(X)は本当は別変数に格納した方が良い
             DataX = DataX & X(I) & vbCrLf   'Chr$(13) & Chr$(10)はVBに定数がある
         Next
     Close #1
 End Sub

標準モジュール:
 Public FilePath As String
 Public Iptline As String
 Public X(), Y() As Variant 
 Public I As Integer
 Public DataX, DataY As String
---------------------------------------------------------------------------------
> あと、念のため訊きますけど、最後に vbTextCompareを設定してるってことは
> 全角スペースも切り出し対象なんですね?
あまり深い意味はありません。データ自体はすべて半角で数字とスペースしかありません。
解説ありがとうございます

> 人にソースを見せるのにコメントが無いってのは頂けませんねぇ。
> 少なくとも何がしたいのかということは明確に書くべきじゃぁないのかなぁ。

そうですよね。以後気をつけます。
ここでやりたいことは
スペースを含んだデータを、Split関数によってスペースで分割して
前半をX(I)、後半をY(I)に入れたいのです
 
> コメントは、処理が簡単か否かで付ける/付けないが決まるものではないんでね。
勉強になります

今回はとりあえず前半をX(I)に代入するところまでやりました
目標としては
X(I),Y(I)
X(I+1),Y(I+1)
X(I+2),Y(I+2)
 .       .
 .       .
という風に処理したいのです
#2864-0
RE#2842:すぺーすを含んだデータの読み込み
> 物分りが悪いもので。とりあえずまた書いてみました
> こういうことでしょうか?
  こういうことでしょうか?って、あなた自分で確認することができないのですか?
  書くだけ書いて、自分では確かめずに他人にデバッグ作業をさせるのですか?
  大変、失礼なことを言っていると思ってください。
  ここまで、返信してくれた方、見ている人たちに結果を報告するべきで、
  一緒に作っているのではないのですよ。

  正しいかどうかは、自分で動かして結果を見ればわかるでしょう?
  書くだけがプログラムではありませんよ。
  想定できるケースを考え、動かした結果が正しい結果になるかどうかを
  確かめるのもプログラム作成の作業のうちの一つです。
  その中で、納得いかない、わからないなど不明な点が出てきたら質問してください。
#2871-0
RE#2864:すぺーすを含んだデータの読み込み
>   ここまで、返信してくれた方、見ている人たちに結果を報告するべきで、
>   一緒に作っているのではないのですよ。
> 
>   正しいかどうかは、自分で動かして結果を見ればわかるでしょう?
>   書くだけがプログラムではありませんよ。
>   想定できるケースを考え、動かした結果が正しい結果になるかどうかを
>   確かめるのもプログラム作成の作業のうちの一つです。
>   その中で、納得いかない、わからないなど不明な点が出てきたら質問してください。

すみません
大変失礼しました
以後気を付けます
このページと関連する記事:
#2624-0スペースを含んだデータの読み込み1999-10-07(木) 13:41
#397-1ファイルからデータをインプットする際、スペースで区切ってデータを取得したい2004-03-06(土) 11:42
#365-4ファイルからデータの読み込み方。2003-12-04(木) 14:00
#45447-0ファイル読み込みで質問を2001-07-30(月) 00:40
#5097-0RE#5088:データの読み込み方2000-01-18(火) 14:48
#7503-0Unixで作成されたテキストファイルの読み込み1999-10-17(日) 00:11
#11683-1ファイルからの読込について2000-06-16(金) 00:20
#16758-0カンマ区切り文字列からの切り出し2000-02-24(木) 12:07
#20159-0csvの読み込み2001-04-10(火) 10:19
#45868-0判定2001-08-14(火) 18:10
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)