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
前にも同じようなことを書いたんですが、最初は良いと思っても、修正のために読み込むとおかしくなったんです。
こんかはどうか?調べるつもりのか気込みです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます