有什么方法可以在vb.net中动态声明字典?

编码编码

相信字典对于这项工作是正确的,但是不确定。应用程序:解析CNC机器代码(文本),识别代码中的序列,并存储每个序列专用的字典。序列数各不相同。找到重要代码后,将存储行号。完成此操作后,可以使用存储的行号作为标记来对文本进行一遍又一遍的迭代,以根据需要进行更改。

我过去已经解决了这个问题,但是解决方案涉及疯狂地循环并重复读取相同的数据。它应该干净得多。

这是我进行此新尝试的逻辑所在。我想动态声明一个字典,但不知道是否可能。

Dim in_list As New List(Of String)
Dim sequences As New Dictionary(Of Integer, Dictionary(Of String, Decimal))
Try
    Dim S100 As New Dictionary(Of String, Decimal)
    Dim S200 As New Dictionary(Of String, Decimal)
    '
    'Dim S5000 as New Dict... come on, now.
    '
    Dim reader As New StreamReader(filename)
    Dim sequence_number As Integer = 0
    Dim line_number As Integer = -1
    Do While reader.Peek <> -1
        Dim L As String = reader.ReadLine
        line_number += 1
        in_list.Add(L)
        'Will be parsing differently, but string.indexof() for example:
        If L.IndexOf("M6") > -1 Then  'M6 marks the beginning of a sequence.
            sequence_number += 100
            If sequence_number = 100 Then
                sequences.Add(sequence_number, S100)
                sequences(sequence_number).Add("M6", line_number)
            End If
            If sequence_number = 200 Then
                sequences.Add(sequence_number, S200)
                sequences(sequence_number).Add("M6", line_number)
            End If
            '
            ' If sequence_number = 5000...
            ' really dude?
            '
        End If

        'Below is not the problem, but may help for suggestions in case
        '    a dictionary should not be used, or any suggestion.
        If sequence_number > 0 And sequences.ContainsKey(sequence_number) Then
            If L.IndexOf("F") > -1 Then
                If Not sequences(sequence_number).ContainsKey("first_F") Then
                    sequences(sequence_number).Add("first_F", line_number)
                End If
                If Not sequences(sequence_number).ContainsKey("last_F") Then
                    sequences(sequence_number).Add("last_F", line_number)
                Else
                    sequences(sequence_number).Item("last_F") = line_number
                End If
            End If
        End If
    Loop
    reader.Close()
Catch ex As Exception
End Try

我正在解析的一些代码是:

N100(5/16" CENTER CUTTING MILL)
M6T4  
G0G80G90G54X.44Y0.S1550M3
G43H4Z1./M8
G98G81Z-.005R.4F3. 
X.37Y0.
X.3Y0. 
G80M9
G91G28Z0.M19 
G90
M01

我实际上不会使用此代码中所示的简单string.IndexOf()。我将使用函数查找某些代码(例如“ F”或“ G”),确保它们不在(注释中),有时提取代码的数值等。

卡夫曼

我不知道你需要申报Dictionary时间提前,你呢?

在这个部分:

sequence_number += 100
If sequence_number = 100 Then
    sequences.Add(sequence_number, S100)
    sequences(sequence_number).Add("M6", line_number)
End If
'
' If sequence_number = 5000...
' really dude?
'

您可以使用sequencesDictionary的属性来避免所有重复的If语句,例如:

sequence_number += 100

If Not sequences.ContainsKey(sequence_number) Then
   'you have not defined the dictionary for this sequence
   'first do that
    sequences.Add(sequence_number, new Dictionary(Of String, Decimal)) 
End If

'at this point you have a Dictionary for this sequence_number, so use it
sequences(sequence_number).Add("M6", line_number)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有什么方法可以自动缩进文本文件中的VB.NET代码

来自分类Dev

在 vb.net 中声明字典(整数,匿名类型)

来自分类Dev

有什么办法可以在我的VB.net中的dabatabase中检查新记录的数据?

来自分类Dev

有什么方法可以解析.net中的Less?

来自分类Dev

有什么方法可以汇总字典中的所有列表值?

来自分类Dev

有什么方法可以检查功能是否已声明?

来自分类Dev

有什么方法可以在perl中将函数声明为变量?

来自分类Dev

有什么方法可以在迭代期间编辑字典的值?

来自分类Dev

VB.Net 为什么我的字典需要显式声明才能使用select?

来自分类Dev

有什么方法可以动态禁用角度多选(cuppa labs)

来自分类Dev

有什么好方法可以在destructuring-bind中声明未使用的变量?

来自分类Dev

除了&var = var类型以外,还有什么方法可以在C ++中声明引用?

来自分类Dev

有什么方法可以在资源字典中重用相同的自定义字体?

来自分类Dev

在.NET中,有什么方法可以测试异步锁定,从而证明可以防止重入?

来自分类Dev

在动态字典中查找所有匹配键=值对的字典

来自分类Dev

有没有一种方法可以在VB.Net Designer中搜索控件?

来自分类Dev

有什么方法可以在Excel中编辑redshift表吗?

来自分类Dev

有什么方法可以忽略VIM中的^ M回车吗?

来自分类Dev

有什么方法可以在Swift中逐步加快游戏速度?

来自分类Dev

有什么方法可以使Flutter中的功能无法替代?

来自分类常见问题

有什么方法可以在Angular2中测试EventEmitter?

来自分类Dev

在Elixir中,有什么方法可以让模块列出其功能?

来自分类Dev

有什么方法可以获取模块中定义的功能列表?

来自分类Dev

有什么方法可以避免在Oracle中触发级联?

来自分类Dev

有什么方法可以在Scala中模拟Singleton对象

来自分类Dev

有什么方法可以覆盖iOS 7中的titleView褪色?

来自分类Dev

有什么方法可以在搜索模式的PDF中获取页码?

来自分类Dev

有什么方法可以删除solrcloud中的无效副本?

来自分类Dev

有什么方法可以在IntelliJ中自动扩展Scala导入?

Related 相关文章

  1. 1

    有什么方法可以自动缩进文本文件中的VB.NET代码

  2. 2

    在 vb.net 中声明字典(整数,匿名类型)

  3. 3

    有什么办法可以在我的VB.net中的dabatabase中检查新记录的数据?

  4. 4

    有什么方法可以解析.net中的Less?

  5. 5

    有什么方法可以汇总字典中的所有列表值?

  6. 6

    有什么方法可以检查功能是否已声明?

  7. 7

    有什么方法可以在perl中将函数声明为变量?

  8. 8

    有什么方法可以在迭代期间编辑字典的值?

  9. 9

    VB.Net 为什么我的字典需要显式声明才能使用select?

  10. 10

    有什么方法可以动态禁用角度多选(cuppa labs)

  11. 11

    有什么好方法可以在destructuring-bind中声明未使用的变量?

  12. 12

    除了&var = var类型以外,还有什么方法可以在C ++中声明引用?

  13. 13

    有什么方法可以在资源字典中重用相同的自定义字体?

  14. 14

    在.NET中,有什么方法可以测试异步锁定,从而证明可以防止重入?

  15. 15

    在动态字典中查找所有匹配键=值对的字典

  16. 16

    有没有一种方法可以在VB.Net Designer中搜索控件?

  17. 17

    有什么方法可以在Excel中编辑redshift表吗?

  18. 18

    有什么方法可以忽略VIM中的^ M回车吗?

  19. 19

    有什么方法可以在Swift中逐步加快游戏速度?

  20. 20

    有什么方法可以使Flutter中的功能无法替代?

  21. 21

    有什么方法可以在Angular2中测试EventEmitter?

  22. 22

    在Elixir中,有什么方法可以让模块列出其功能?

  23. 23

    有什么方法可以获取模块中定义的功能列表?

  24. 24

    有什么方法可以避免在Oracle中触发级联?

  25. 25

    有什么方法可以在Scala中模拟Singleton对象

  26. 26

    有什么方法可以覆盖iOS 7中的titleView褪色?

  27. 27

    有什么方法可以在搜索模式的PDF中获取页码?

  28. 28

    有什么方法可以删除solrcloud中的无效副本?

  29. 29

    有什么方法可以在IntelliJ中自动扩展Scala导入?

热门标签

归档