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

こんにちは。
VB6.0にてフォーム上のテキストボックスの文字列を1行ずつ読み込んで処理し、別のテキストボックに書き出したいのですが、1行ずつ読む方法が分かりません。(テキストファイルなら出来るのですが)

何方か方法をご存知ないでしょうか。
宜しくお願いします。

A 回答 (5件)

ちょっと、致命的なミスをしていましたので訂正します。



Private Sub Command1_Click()
  Dim I    As Integer
  Dim strText As String
  Dim strTexts(1) As String
  
  Me.Text1(1).Text = ""
  If Len(Me.Text1(0).Text & "") > 0 Then
    strTexts(0) = Me.Text1(0).Text
    Do
      I = I + 1
      strText = CutStr(strTexts(0), vbCrLf, I)
      If strText <> "" Then
        strTexts(1) = strTexts(1) & strText & vbCrLf
      End If
    Loop Until strText = ""
    Me.Text1(1).Text = Left(strTexts(1), Len(strTexts(1)) - 1)
  End If
End Sub

フォームのテキストボックスからの読み込みと書き込みは最小ステップにするべきでした。
    • good
    • 0
この回答へのお礼

おお~できました。
迅速な回答を頂いて感謝しています。

また何かありましたら、宜しくお願いいたします。
本当にありがとうございました!!

お礼日時:2007/06/29 13:39

こんにちは


やりたいことがいまいちわかりませんが、
回答への補足を見ていると
text2.text = text1.text
わざわざstResultを経由しなくてもよさそうですが。

改行付のテキストを配列に入れるには以下の方法はどうでしょうか?
dim hairetu() as String
hairetu = split(text1.text, vbNewLine)
VB6がないので検証できませんが間違っていたらゴメンナサイ。
    • good
    • 3

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)


  Debug.Print KeyCode
End Sub

は、無関係。
    • good
    • 0

Private Sub Command1_Click()


  Dim I    As Integer
  Dim strText As String
  
  Me.Text1(1).Text = ""
  If Len(Me.Text1(0).Text & "") > 0 Then
    Do
      I = I + 1
      strText = CutStr(Me.Text1(0).Text, vbCrLf, I)
      If strText <> "" Then
        Me.Text1(1).Text = Me.Text1(1).Text & strText & vbCrLf
      End If
    Loop Until strText = ""
    Me.Text1(1).Text = Left(Me.Text1(1).Text, Len(Me.Text1(1).Text) - 1)
  End If
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Debug.Print KeyCode
End Sub

Private Sub Form_Load()
  Me.Text1(0).Text = "001" & vbCrLf
  Me.Text1(0).Text = Me.Text1(0).Text & "002" & vbCrLf
  Me.Text1(0).Text = Me.Text1(0).Text & "003"
End Sub

このように、CutStr関数などで1行づつ抽出するという方法があります。

Public Function CutStr(ByVal Text As String, _
            ByVal Separator As String, _
            ByVal N As Integer) As String
  Dim strDatas() As String
  
  strDatas = Split("" & Separator & Text, Separator, , 0)
  CutStr = strDatas(N * Abs((N <= UBound(strDatas))))
End Function

[イミディエイト]
? CutStr("AAAA/BBBB/CCCC", "/", 1)
AAAA
? CutStr("AAAA/BBBB/CCCC", "/", 2)
BBBB
? CutStr("AAAA/BBBB/CCCC", "/", 3)
CCCC

質問の案件では、区切り文字がスラッシュ(/)ではなく cbCrLf ということです。

? CutStr("AAAA AND BBBB AND CCCC", " AND ", 1)
AAAA

と、CutStr関数が、区切り文字の長さを問いませんので Chr$(13) & Chr$(10) を指定できます。
    • good
    • 0

テキストボックスの内容をプログラムの中で配列の変数を切って


それに入れていって、配列で処理するのはだめなんですか?

この回答への補足

返信ありがとうございまうす。
テキストファイルならば、
-------------------------------------------
' 使用可能なファイル番号を取得する
Dim iFileNo As Integer
iFileNo = FileSystem.FreeFile()

' ファイルを開く
Open "C:\Hoge.txt" For Input As #iFileNo

' 読み込んだ結果をすべて格納するための変数を宣言する
Dim stResult As String

' ファイルを 1 行ずつ読み込む
Do While (Not FileSystem.EOF(iFileNo))
' ファイルを 1 行ずつ読み込む
Dim stBuffer As String
Line Input #iFileNo, stBuffer
' 読み込んだものを追加で格納する
stResult = stResult & stBuffer & vbNewLine
Loop

' ファイルを閉じる (正しくは オブジェクトの破棄を保証する を参照)
Close #iFileNo

' 結果を表示する
Call MsgBox(stResult)
----------------------------------------------------------------------
のようにテキストファイルの内容を1行ずつLine inputで読み込んで、1行ごとに「”」で囲むなど出来ますが、テキストボックスだとLine inputで読めないので困っているのです。
宜しくお願いいたします。

補足日時:2007/06/29 12:40
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています