Я работаю с робототехнической программой BluePrism для автоматизации чтения, интерпретации и, в конечном счете, работы в приложении для мэйнфреймов. Приложение для мэйнфреймов устарело, и его файлы сеансов несовместимы с BluePrism. Если бы это было так, я бы не пытался показать то, что собираюсь вам показать / спросить.
Поскольку мы не можем использовать встроенное чтение экрана в BluePrism, почему бы не сделать так, чтобы робот копировал весь экран как текст? Я думал, что здесь очень хорошо будет работать с текстом.
В любом случае у меня есть робот, копирующий экран, и я могу получить экран из буфера обмена. Нет проблем. У меня даже есть экран в DataTable (BluePrism называет их Коллекциями, но одними и теми же объектами), где каждая строка является строкой на экране. Круто.
Что ж, вот вопрос с кодом, который я пытался сделать, но не смог. Я хочу разделить каждую строку в этой DataTable, используя TextFieldParser и FixedWidth, поскольку я не могу использовать разделители символов или пробелы. А затем добавьте эту разделенную строку в новый выходной DataTable. Так что я могу использовать его позже в BluePrism. Код ниже компилируется. Я не ловлю ошибки. Я не получаю необработанные тоже. Что я получаю, так это пустой выходной объект DataTable, но он содержит правильное количество строк. Итак, ошибка логики c, но я буду проклят, если увижу, что я сделал неправильно.
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 в текстовый файл и Я получаю часть экрана, которую я только что скопировал. Таким образом, шаг внутри для l oop R.Item(i) = colFields(i)
не работает должным образом или не работает add SplitScrnSectColl.Rows.Add(R)
. Никаких ошибок, хотя. Просто пустой DataTable. Мы будем благодарны за любую помощь.
ScrnSectColl - это входная таблица данных, которая состоит из строк текста на экране. SplitScrnSectColl - это выходная таблица данных из 7 столбцов всего текста.