- ベストアンサー
VB 保存・読み込み2
どもです。この間の質問の続きです。VB6.0 SP5 open の保存で文字の区切りに " , が使われるために text1 text2 text3 にそれぞれ文字を入れて保存してもその文字へ " ,等を使っている場合そこで区切られてしまい、text1に=あいう"えお と入力して保存⇒読み込みをするというtext1=あいう text2=えおと区切られてします問題でした。 そこでかなり考えてすこし良い案が浮かびました。 がコードが浮かびません^^; これをコードに変えられる方お願いします。 a = text1.text ←「あいうえお」と打ち込む。 b = text2.text ←「かきくけこ」と打ち込む。 c = text3.text ←「さしすせそ」と打ち込む。 open "test.txt" for output as #1 print #1,a & "<tes>" & b & " <tes> " & c で保存すると あいうえお<tes>かきくけこ<tes>さしすせそ と保存される訳です。 ※次に開きます。 open test.txt" for input as #1 この読み込みが判らないんですが、<tes>の 場所でそれぞれa b cに分けるようにすればいいと 思ったんです。 出来ますか@@???
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 >text1.text = tempの感じでやると >型が一致しません。と出ます。 Split関数は、配列を返します。 したがって、 Text1.Text = temp(0) Text2.Text = temp(1) ・・・ のように配列の各要素ごとに代入しなければいけません。
その他の回答 (5)
- i-touch
- ベストアンサー率40% (170/415)
保存のときに1データ1行ではだめですか? Printで保存するときに末尾に「;」を付けなければ、データの行末にCR+LFが付くと思います。 読むときはLine Inputで「文字変数」に(Dim a As Stringなどと定義)読み込みます。 二重引用符やカンマを含むデータの場合、保存時に工夫できないときは、私は、Instr()を組合わせて、人間が見たときと同じようなロジックを組んでいます。 あと、このような場合、Tab(Chr(9)コード)区切りにしておくと、汎用性と確実性があると思います。 では!
- yomo3
- ベストアンサー率32% (88/269)
#3です。 >text1.text = tempの感じでやると textプロパティには、配列は代入できないんじゃないかな? variant型のせいではないと思いますよ。 配列を改行コードを挟んでつなげると、マルチライン表示になりますが……。
- yomo3
- ベストアンサー率32% (88/269)
まず、1行まるごと読み込みますな。 Input #1,Buffer だと、カンマなどがあると、そこで切れてしまうので、 Line Input #1,Buffer の方が良いと思いまする。 で、Split関数です。 Temp = Split(Buffer,"<res>") 続けて書くと、 Dim Buffer As Variant,Temp As Variant Open "test.txt" For Input As #1 Line Input #1,Buffer Temp = Split(Buffer,"<res>") Close #1 で、配列Tempにお望みのデータが入るはずです。
補足
でもです!希望通りtempには入ったようですが variant型のせいか text1.text = tempの感じでやると 型が一致しません。と出ます。 text1.textにそのtempを表示したいのですが方法はありますでしょうか? StringだとエラーなりますしT_T;
- hofuhofu
- ベストアンサー率70% (336/476)
Split関数のDelimiterに<tes>を指定とか。 Binaryモードで読み込む必要はあるでしょうけど。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Split関数を使用すればいいと思います。 Dim temp As Variant Dim i As Long temp = Split("あいうえお<res>かきくけこ<res>さしすせそ", "<res>") For i = 0 To UBound(temp) Debug.Print temp(i) Next i
補足
どもです。 variant型のせいか text1.text = tempの感じでやると 型が一致しません。と出ます。 textに表示したいのですが方法はありますでしょうか?
お礼
ようやく自分の思い通りに出来ました! 良かったです^^ありがとうございました。