0

私は BluePrism と呼ばれるロボティクス プログラムを使用して、メインフレーム アプリケーションでの読み取り、解釈、および最終的な作業を自動化しています。メインフレーム アプリケーションは古く、そのセッション ファイルは BluePrism と互換性がありません。もしそうなら、私はあなたに見せよう/あなたに尋ねようとしていることを試みていないでしょう.

BluePrism ではビルトインのスクリーン リーディングを使用できないため、ロボットに画面全体をテキストとしてコピーさせてみませんか? ここでは、テキスト操作がうまく機能すると思いました。

とにかく、ロボットに画面をコピーさせて、クリップボードから画面を取得できます。問題ない。各行が画面からの行である DataTable (BluePrism はコレクションと呼びますが、同じオブジェクト) にも画面があります。素晴らしい。

さて、ここに私がやろうとしているが失敗したコードでの質問があります。文字の区切り記号やスペースを使用できないため、TextFieldParser と FixedWidth を使用してその DataTable の各行を分割したいと考えています。次に、分割された行を新しい出力 DataTable に追加します。後で BluePrism で使用できるようにします。以下のコードがコンパイルされます。私はエラーをキャッチしません。未処理のものもありません。私が得るのは空の出力 DataTable ですが、正しい行数があります。論理エラーですが、私が間違っていたことがわかれば、私は気が滅入ります。

Dim colFields(6) As String
Dim line As String
line = ""

Try
    For Each row As System.Data.DataRow In ScrnSectColl.Rows
        line = row("Value")
        Using stringline As New System.IO.StringReader(line)
            Using reader As New Microsoft.VisualBasic.FileIO.TextFieldParser(stringline)
                reader.TrimWhiteSpace = False
                reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
                reader.SetFieldWidths(17, 9, 9, 17, 10, 10, 8)
                colFields = reader.ReadFields()
                Dim R As DataRow = SplitScrnSectColl.NewRow()
                For i As Integer = 0 To SplitScrnSectColl.Columns.Count - 1
                    R.Item(i) = colFields(i)
                Next
                SplitScrnSectColl.Rows.Add(R)
            End Using
        End Using
    Next row
Catch ex As Exception
    TextParserFailed = True
    'SplitScrnSectColl.Clear()
    ErrorMessage = "Error: Text Field Parser failed " & System.Environment.NewLine & line & System.Environment.NewLine & "Original Error: " & ex.Message
End Try

文字列配列 colFields をテキスト ファイルに出力でき、先ほどコピーしたばかりの画面セクションを取得できるため、TextFieldParser が機能していることはわかっています。そのため、for ループ内のステップがR.Item(i) = colFields(i)意図したとおりに機能していないか、追加SplitScrnSectColl.Rows.Add(R)が機能していません。エラーはありませんが。空の DataTable だけです。どんな助けでも大歓迎です。

ScrnSectColl は、画面からのテキスト行で構成される入力 DataTable です。SplitScrnSectColl は、7 列のすべてのテキストの出力 DataTable です。

4

1 に答える 1