⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmread.vb

📁 日報管理システム&#65407 &#65392 &#65405 です よろしくお願いします
💻 VB
📖 第 1 页 / 共 3 页
字号:
                            Controls("txtReport").Text &= _
                            xmlNo.NamespaceURI & Constants.vbCrLf

                    '■件数1の判断
                ElseIf xmlNo.Name.Equals("Count1") AndAlso _
                    xmlNo.NodeType = XmlNodeType.Element Then

                    '□件数1の表示
                    txtKensuu1.Text = xmlNo.NamespaceURI

                    '■件数2の判断
                ElseIf xmlNo.Name.Equals("Count2") AndAlso _
                    xmlNo.NodeType = XmlNodeType.Element Then

                    '□件数2の表示
                    txtKensuu2.Text = xmlNo.NamespaceURI

                    '■サッバタイトル1の判断
                ElseIf xmlNo.Name.Equals("SubTitle1") AndAlso _
                    xmlNo.NodeType = XmlNodeType.Element Then

                    '□サッバタイトル1の表示
                    Me.tabReport.TabPages("tbPage" & (Me.tabReport.TabCount - 1).ToString). _
                           Controls("txtBusyo0").Text &= _
                           xmlNo.NamespaceURI

                    '■サッバタイトル2の判断
                ElseIf xmlNo.Name.Equals("SubTitle2") AndAlso _
                    xmlNo.NodeType = XmlNodeType.Element Then

                    '□サッバタイトル2の表示
                    Me.tabReport.TabPages("tbPage" & (Me.tabReport.TabCount - 1).ToString). _
                          Controls("txtBusyo1").Text &= _
                          xmlNo.NamespaceURI

                End If

                Call SetNode(xmlNo)
            Next

        Catch ex As Exception

        End Try
    End Sub

    ''' <summary>
    ''' レポート書き込む処理
    ''' </summary>
    ''' <param name="strPath">ファイル名を含むパス</param>
    ''' <remarks></remarks>
    Private Sub MakeNewXml(ByVal strPath As String)

        '■変数
        Dim xmlWriter As XmlTextWriter                              '書き込む用クラス
        Dim strList As String()                                     'レポート内容記録用

        Try

            ''■ユーザレポートがなくなる場合 相応XMLファイルを削除する
            'If Me.tabReport.TabPages.Count = 0 AndAlso _
            '        String.IsNullOrEmpty(Me.txtKensuu1.Text.Trim) AndAlso _
            '        String.IsNullOrEmpty(Me.txtKensuu1.Text.Trim) Then

            '    '□ファイルの削除
            '    File.Delete(strPath)
            '    '□削除と更新ボタンの設定
            '    Me.tsbUpdate.Enabled = False
            '    Me.tsbDelete.Enabled = False

            '    Return
            'End If

            '■書き込むクラスの生成
            xmlWriter = New XmlTextWriter(strPath.ToString, System.Text.Encoding.GetEncoding("UTF-8"))

            '■書き込む処理
            With xmlWriter
                '□出力書式設定
                .Formatting = Formatting.Indented
                '□階層の設定
                .Indentation = 3
                '□バージョン1.0でXML宣言書き込む
                .WriteStartDocument()
                '□開始タグを書き込む
                .WriteStartElement("DATETIME", Now)

                '□件数をここに追加
                .WriteStartElement("Count1", Me.txtKensuu1.Text)
                .WriteStartElement("Count2", Me.txtKensuu2.Text)
                '□件数追加ここまで

                '□レポートタイトルと内容を書き込む
                For i As Integer = 0 To Me.tabReport.TabPages.Count - 1
                    '□レポートタイトルを書き込む
                    .WriteStartElement("Title", Me.tabReport.TabPages(i).Text)
                    .WriteStartElement("SubTitle1", Me.tabReport.TabPages(i).Controls("txtBusyo0").Text)
                    .WriteStartElement("SubTitle2", Me.tabReport.TabPages(i).Controls("txtBusyo1").Text)

                    '□レポート内容の記録
                    strList = CType(Me.tabReport.TabPages(i).Controls(0), TextBox).Text.Split(vbCrLf)

                    '□レポート内容を書き込む
                    For j As Integer = 0 To strList.Length - 1
                        .WriteStartElement("Naiyou" & j, strList(j).ToString)
                        .WriteEndElement()
                    Next

                    '□レポートタイトル終了タグを書き込む
                    .WriteEndElement()

                Next
                '□開始タグ終了タグを書き込む
                .WriteEndElement()
                '□XML書き込むの終了
                .WriteEndDocument()
                '□刷新処理
                .Flush()
                '□解放処理
                .Close()

            End With

            '■バイナリ化処理
            Call Me.ToBinary(strPath)

        Catch ex As Exception

            MsgBox(ex.ToString, , "MakeNewXml()失敗")
        Finally
            '■解放処理
            xmlWriter = Nothing
            Erase strList
        End Try

    End Sub

    ''' <summary>
    ''' 生成バスの存在判断
    ''' </summary>
    ''' <param name="filePaths">既存のバスリスト</param>
    ''' <param name="filePath">生成のバス</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function CheckPath(ByVal filePaths As String(), ByVal filePath As String) As Boolean
        Try

            '■既存バスリストの遍歴
            For i As Integer = 0 To filePaths.Length - 1

                '□生成バスがあるどうかの判断
                If filePaths(i).Equals(filePath) Then
                    '□存在の場合真を戻る
                    Return True
                End If
            Next

            '□存在しない場合仮を戻る
            Return False
        Catch ex As Exception

            MsgBox(ex.ToString, , "CheckPath()失敗")
        End Try

    End Function

    ''' <summary>
    ''' レポートパターンの生成
    ''' </summary>
    ''' <param name="pTitle"></param>
    ''' <remarks></remarks>
    Private Sub SetReport(ByVal pTitle As String)

        '■変数
        Dim tbPage As New TabPage                               'レポートタイトル生成用
        Dim txtReport As New TextBox                            'レポート内容表示用

        Try

            '■レポートタイトルとレポート編集コントロールの生成
            '□レポートタイトルの生成
            tbPage = New TabPage
            tbPage.Name = "tbPage" & Me.tabReport.TabCount.ToString
            tbPage.Text = pTitle
            '□レポートタイトルを画面に追加する
            Me.tabReport.TabPages.Add(tbPage)

            '□レポート編集コントロールの生成
            txtReport = New TextBox
            txtReport.ReadOnly = True
            '□表示用TextBoxのプロパティ設定
            txtReport.Name = "txtReport"
            txtReport.Multiline = True
            txtReport.ScrollBars = ScrollBars.Vertical
            txtReport.Font = New Font("MS P Gothic", 12, FontStyle.Regular)
            txtReport.Size = New Size(Me.tabReport.Width - 5, Me.tabReport.Height - 50)
            txtReport.Location = New Point(0, 35)
            txtReport.Dock = DockStyle.Bottom
            '□表示用TextBoxの追加
            Me.tabReport.TabPages(Me.tabReport.TabCount - 1).Controls.Add(txtReport)

            '■訪問部署ボックス生成(パネル上)
            Dim txtBusyo As New TextBox
            txtBusyo.ReadOnly = True
            Dim lblBusyo As New Label
            txtBusyo.Name = "txtBusyo0"
            tbPage.Controls.Add(txtBusyo)
            txtBusyo.Location = New Point(30, 0)
            txtBusyo.Size = New Size(250, 25)

            '■報告内容2ボックス生成(予備)
            Dim txtBusyo2 As New TextBox
            txtBusyo2.ReadOnly = True
            Dim lblBusyo2 As New Label
            txtBusyo2.Name = "txtBusyo1"
            tbPage.Controls.Add(txtBusyo2)
            txtBusyo2.Location = New Point(350, 0)
            txtBusyo2.Size = New Size(250, 25)

        Catch ex As Exception
            MsgBox(ex.ToString, , "SetReport()失敗")
        Finally
            '■解放処理
            tbPage = Nothing
            txtReport = Nothing
        End Try
    End Sub

    ''' <summary>
    ''' ファイルバイナリ化ファイルを書き込む
    ''' </summary>
    ''' <param name="pStrPath">変換元ファイルバス</param>
   ''' <remarks></remarks>
    Private Sub ToBinary(ByVal pStrPath As String)

        '■変数
        Dim inputStream As FileStream
        Dim encryptedStream As FileStream
        Dim strAftPath = ""
        Dim encryptionkey() As Byte

        Try

            strAftPath = pStrPath.Substring(0, pStrPath.Length - 3) & "bin"
            encryptionkey = System.Text.Encoding.ASCII.GetBytes("solution")

            '■暗号化する対象のFileStreamオブジェクト
            inputStream = New FileStream(pStrPath, FileMode.Open, FileAccess.Read)

            '■暗号化したものを書き込むためのFileStreamオブジェクト
            encryptedStream = New FileStream(strAftPath, FileMode.Create, FileAccess.Write)

            '■DESと呼ばれる方法で暗号化するためのオブジェクト
            Dim des As New DESCryptoServiceProvider()

            ' 鍵は64ビット(8バイト)のバイト配列である必要がある
            des.Key = encryptionkey

            ' 初期化ベクタ(暗号化と復号化の際には同じIVを必要とする)
            des.IV = encryptionkey

            ' CryptoStreamオブジェクトを作成する
            Dim transform As ICryptoTransform = des.CreateEncryptor() ' Encryptorを作成する
            Dim cryptoStream As New CryptoStream(encryptedStream, transform, CryptoStreamMode.Write)

            ' 暗号化する対象をバイト配列として読み込む
            Dim buffer() As Byte
            Dim length As Integer = CInt(inputStream.Length)

            ReDim buffer(length)

            inputStream.Read(buffer, 0, length)

            ' CryptoStreamによって暗号化して書き込む
            cryptoStream.Write(buffer, 0, length)

            ' CryptoStreamを閉じる
            cryptoStream.Close()

            ' FileStreamを閉じる
            inputStream.Close()
            encryptedStream.Close()

            '元XMLファイルの削除
            File.Delete(pStrPath)

        Catch ex As Exception
            MsgBox(ex.ToString, , "ToBinary()失敗")

        Finally
            strAftPath = Nothing
            Erase encryptionkey
            encryptionkey = Nothing
        End Try


    End Sub

    ''' <summary>
    ''' ファイルバイナリ化ファイルを読み取り
    ''' </summary>
    ''' <param name="pStrPath">変換元ファイルバス</param>
    ''' <remarks></remarks>
    Private Function FromBinary(ByVal pStrPath As String) As XmlDocument

        '■変数
        Dim xmlD As XmlDocument                            'XMLファイル読み取り用
        Dim encryptedStream As FileStream
        Dim encryptionkey() As Byte
        Dim encStream As CryptoStream
        Dim des As New DESCryptoServiceProvider
        Dim buffer() As Byte
        Dim strX As String = ""
        Dim sr As StreamReader

        Try

            '■暗号化のキーの生成
            encryptionkey = System.Text.Encoding.ASCII.GetBytes("solution")
            des.Key = encryptionkey
            des.IV = encryptionkey

            '■暗号化したファイル導入のFileStream
            encryptedStream = New FileStream(pStrPath, FileMode.Open, FileAccess.Read)

            '■暗号化ファイル解放用
            encStream = New CryptoStream(encryptedStream, des.CreateDecryptor(), CryptoStreamMode.Read)

            '■解放したバイト記録用
            ReDim buffer(encryptedStream.Length)
            
            '■取得したバイトをXMLに転換する
            sr = New StreamReader(encStream)
            strX = sr.ReadToEnd

            '■暗号化ファイルの読み込む
            sr.Close()
            '■CryptoStreamを閉じる
            encStream.Close()

            '■FileStreamを閉じる
            encryptedStream.Close()

            '■XmlDocumentの生成
            xmlD = New XmlDocument
            xmlD.LoadXml(strX)

            Return xmlD

        Catch ex As Exception
            Throw

        Finally
            '■解放処理
            des = Nothing
            strX = Nothing
            pStrPath = Nothing
            Erase buffer
            buffer = Nothing
            Erase encryptionkey
            encryptionkey = Nothing
        End Try

    End Function

#End Region

End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -