goo blog サービス終了のお知らせ 

新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

試験書込その2

2017-06-07 23:59:19 | パソコン

Public Class Form1

    Dim lstobj As New ArrayList
    Dim MaxKen As Integer

    Private Sub InitData()

    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        Dim line As String
        Dim storedline As String

        Dim ofd As New OpenFileDialog
        ofd.FileName = "burouchi2008.csv"
        ofd.InitialDirectory = "d:\users\isamg2\documents\"
        ofd.Title = "開くファイルを選択して下さい。"

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            'Console.WriteLine(ofd.FileName)
        End If
        Dim reader As New System.IO.StreamReader( _
                        ofd.FileName, System.Text.Encoding.UTF8)
        '"d:\users\isamg2\documents\burouchi2008.csv", System.Text.Encoding.UTF8)
        TextBox1.Clear()

        Dim i As Integer = 0
        storedline = ""

        'リストボックスを使う準備
        ListBox1.Items.Clear()
        ListBox1.BeginUpdate()
        Do Until reader.EndOfStream

            Dim oOya As New OyaClass
            lstobj.Add(oOya)

            line = reader.ReadLine()
            TextBox1.AppendText(line.Substring(0) & ControlChars.CrLf)
            storedline = storedline & line & ControlChars.CrLf

            If line = "--------" Then   '"--------"はBobyの終了
                KakikomiKaiseki(storedline, lstobj(i), i)
                'TextBoxReadAreaClear()
                TextBox1.Clear()
                i += 1
                storedline = ""
            End If
        Loop

        ListBox1.EndUpdate()
        MaxKen = i      'MaxKen データがある件数0から始まるので最後は-1する。

        reader.Close()

        '=====================================================================================================
        KakikomiFileSyuturyoku()


        'obj = Nothing

    End Sub
    Private Sub TextBoxReadAreaClear()
        Dim res As DialogResult
        res = MessageBox.Show("何方かを選択して下さい", _
                                "クリアかしないか?", MessageBoxButtons.YesNo)
        Select Case res
            Case Windows.Forms.DialogResult.Yes
                Me.TextBox1.Clear()
            Case Windows.Forms.DialogResult.No

        End Select

    End Sub

    Private Sub KakikomiKaiseki(ByVal storedline As String, ByRef obj As OyaClass, _
                                ByVal maini As Integer)

        Dim i As Integer = storedline.IndexOf("TITLE:")
        Dim str As String = storedline.Substring(i + "TITLE:".Length)
        Dim j As Integer = str.IndexOf(vbCrLf)
        Dim str2(3) As String
        str2(0) = str.Substring(0, j)       'TITLEの分離

        i = storedline.IndexOf("PRIMARY CATEGORY:")
        If i = -1 Then                      'Primary Categoryが無いときがあるので
            str2(1) = ""
        Else
            str = storedline.Substring(i + "PRIMARY CATEGORY:".Length)
            j = str.IndexOf(vbCrLf)
            str2(1) = str.Substring(0, j)   'PRIMARY CATEGORYの分離
        End If

        i = storedline.IndexOf("DATE:")
        str = storedline.Substring(i + "DATE:".Length)
        j = str.IndexOf(vbCrLf)
        str2(2) = str.Substring(0, j)       'DATEの分離
        '===============================================================================================
        i = storedline.IndexOf("BODY:")
        str = storedline.Substring(i + "BODY:".Length + vbCrLf.Length)
        str = str.Replace(vbCrLf, "")       'Bodyの実体が次の行から始まっている

        j = str.IndexOf("-----")
        str2(3) = str.Substring(0, j)      'BODYの分離


        obj.ID = maini
        obj.Title = str2(0)
        obj.PriCategory = str2(1)
        obj.CreateDate = str2(2)
        obj.Body = str2(3)


        ListBox1.Items.Add(lstobj(maini).ID.ToString() & lstobj(maini).Title)

        'ここにコメントの処理が入る
        Dim auth(10) As String
        Dim hizu(10) As String
        Dim con(10) As String


        Dim l As Integer
        str = storedline
        For l = 0 To 10                  'コメントは10個まで調べる
            i = str.IndexOf("COMMENT:")
            If Not i = -1 Then
                str = str.Substring(i + "COMMENT:".Length + vbCrLf.Length)
                'i = str.IndexOf("AUTHOR:")
                j = str.IndexOf(vbCrLf)
                auth(l) = str.Substring("AUTHOR:".Length, j - "AUTHOR:".Length)

                str = str.Substring(j)

                i = str.IndexOf("DATE:")
                str = str.Substring(i)

                j = str.IndexOf(vbCrLf)
                hizu(l) = str.Substring("DATE:".Length, j - "DATE:".Length)

                str = str.Substring(j)
                i = str.IndexOf("-----")
                con(l) = str.Substring(0, i)

                str = str.Substring(i + "-----".Length)
            Else
                Exit For
            End If

        Next l

        Dim MaxCom As Integer = l - 1

        For i = 0 To MaxCom
            obj.Comments(i) = New Comment()
        Next

        For i = 0 To MaxCom
            obj.Comments(i).CID = i
            obj.Comments(i).CAuthor = auth(i)
            obj.Comments(i).CCreateDate = hizu(i)
            obj.Comments(i).CCommentStr = con(i)
        Next


    End Sub

    Private Sub KakikomiFileSyuturyoku()
        Dim writer As New System.IO.StreamWriter( _
            "d:\users\isamg2\documents\brcsamary.csv", False, System.Text.Encoding.Default)
        Dim i As Integer
        For i = 0 To MaxKen - 1
            writer.Write(lstobj(i).ID.ToString())
            writer.Write("," & lstobj(i).Title)
            writer.Write("," & lstobj(i).PriCategory)
            writer.Write("," & lstobj(i).CreateDate)
            writer.WriteLine("," & lstobj(i).Body)
        Next
        writer.Close()
        MessageBox.Show("CSVファイルに出力しました。")

        TextBox2.Text = ListBox1.SelectedIndex

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim num As Integer
        num = CInt(TextBox2.Text)

        TextBox1.Clear()
        TextBox1.Text = lstobj(num).ID.ToString & vbCrLf
        TextBox1.Text = TextBox1.Text & lstobj(num).Title & vbCrLf
        TextBox1.Text = TextBox1.Text & lstobj(num).PriCategory & vbCrLf
        TextBox1.Text = TextBox1.Text & lstobj(num).CreateDate & vbCrLf
        TextBox1.Text = TextBox1.Text & lstobj(num).Body & vbCrLf
        '=========================================================================================
        WebBrowser1.DocumentText = _
       "<html><body><br/>" & _
       "" & TextBox1.Text & _
       "</body></html>"

        Dim i As Integer
        TextBox3.Text = ""

        For i = 0 To 10
            If IsNothing(lstobj(num).Comments(i)) Then Exit For
            TextBox3.Text = TextBox3.Text & lstobj(num).Comments(i).CID.ToString() & vbCrLf
            TextBox3.Text = TextBox3.Text & lstobj(num).Comments(i).CAuthor & vbCrLf
            TextBox3.Text = TextBox3.Text & lstobj(num).Comments(i).CCreateDate & vbCrLf
            TextBox3.Text = TextBox3.Text & lstobj(num).Comments(i).CCommentStr & vbCrLf
        Next
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        InitData()
        WebBrowser1.DocumentText = _
       "<html><body><br/>" & _
       "" & _
       "</body></html>"

    End Sub

    Private Sub webBrowser1_Navigating( _
    ByVal sender As Object, ByVal e As WebBrowserNavigatingEventArgs) _
    Handles WebBrowser1.Navigating

        Dim document As System.Windows.Forms.HtmlDocument = _
            webBrowser1.Document

    End Sub

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        TextBox2.Text = ListBox1.SelectedIndex
    End Sub
End Class

前にも同じようなことを書いたんですが、最初は良いと思っても、修正のために読み込むとおかしくなったんです。

こんかはどうか?調べるつもりのか気込みです。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 試験書込です。 | トップ | VBで遊んでました。ブローチ... »
最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。

パソコン」カテゴリの最新記事