我正在使用一个名为 BluePrism 的机器人程序来自动读取、解释并最终在大型机应用程序中工作。大型机应用程序已过时,其会话文件与 BluePrism 不兼容。如果是这样,我就不会尝试我将要向您展示/询问您的内容。
既然我们不能使用 BluePrism 中内置的屏幕阅读功能,为什么不让机器人将整个屏幕复制为文本呢?我想,文本操作在这里会很好用。
无论如何,我让机器人复制屏幕,我可以从剪贴板获取屏幕。没问题。我什至在 DataTable 中有屏幕(BluePrism 将它们称为集合,但对象相同),其中每一行都是屏幕中的一行。惊人的。
好吧,现在这是我尝试执行但失败的代码的问题。我想使用 TextFieldParser 和 FixedWidth 拆分该 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
我知道 TextFieldParser 正在工作,因为我可以将字符串数组 colFields 输出到文本文件,并且我得到了刚刚复制回给我的屏幕部分。所以 for 循环R.Item(i) = colFields(i)
中的步骤没有按预期工作,或者 addSplitScrnSectColl.Rows.Add(R)
没有工作。虽然没有错误。只是一个空白的数据表。任何帮助,将不胜感激。
ScrnSectColl 是输入数据表,由屏幕上的文本行组成。SplitScrnSectColl 是 7 列全文本的输出 DataTable。