プロが教えるわが家の防犯対策術!

どもです。この間の質問の続きです。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に分けるようにすればいいと
思ったんです。

出来ますか@@???


 

A 回答 (6件)

こんにちは。

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に表示したいのですが方法はありますでしょうか?

補足日時:2004/01/19 18:26
    • good
    • 0

Split関数のDelimiterに<tes>を指定とか。


Binaryモードで読み込む必要はあるでしょうけど。

参考URL:http://www.microsoft.com/japan/msdn/library/ja/v …
    • good
    • 0

まず、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;

補足日時:2004/01/19 18:29
    • good
    • 0

#3です。


>text1.text = tempの感じでやると
textプロパティには、配列は代入できないんじゃないかな?
variant型のせいではないと思いますよ。
配列を改行コードを挟んでつなげると、マルチライン表示になりますが……。
    • good
    • 0

保存のときに1データ1行ではだめですか?


Printで保存するときに末尾に「;」を付けなければ、データの行末にCR+LFが付くと思います。
読むときはLine Inputで「文字変数」に(Dim a As Stringなどと定義)読み込みます。
二重引用符やカンマを含むデータの場合、保存時に工夫できないときは、私は、Instr()を組合わせて、人間が見たときと同じようなロジックを組んでいます。
あと、このような場合、Tab(Chr(9)コード)区切りにしておくと、汎用性と確実性があると思います。
では!
    • good
    • 0

No.1です。



>text1.text = tempの感じでやると
>型が一致しません。と出ます。
Split関数は、配列を返します。
したがって、

Text1.Text = temp(0)
Text2.Text = temp(1)
・・・

のように配列の各要素ごとに代入しなければいけません。
    • good
    • 0
この回答へのお礼

ようやく自分の思い通りに出来ました!

良かったです^^ありがとうございました。

お礼日時:2004/01/20 15:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!