Vb6 查找行的已注释部分

Vb6 查找行的已注释部分,vb6,Vb6,vb6使用什么规则来查找标记注释开始的撇号 一行(多行)之外的部分 我对自己定义此类规则的能力没有信心,因为: 字符串文字中的撇号 字符串操作中嵌套双引号内的撇号 注释中可能会出现双引号 一行可以在多行上连续的事实 冒号打断了一行 我不知道的可能的其他规则 忽略字符串文字中的撇号。注释中的撇号也被忽略(因为它们已经在注释中)。在多行语句中不能使用撇号,除非它位于语句的最后一行——在这种情况下,它只遵循正常规则 你为什么这么担心?字符串文字中的撇号被忽略。注释中的撇号也被忽略(因为它们已经在注释

vb6使用什么规则来查找标记注释开始的撇号 一行(多行)之外的部分

我对自己定义此类规则的能力没有信心,因为:

  • 字符串文字中的撇号
  • 字符串操作中嵌套双引号内的撇号
  • 注释中可能会出现双引号
  • 一行可以在多行上连续的事实
  • 冒号打断了一行
  • 我不知道的可能的其他规则

    • 忽略字符串文字中的撇号。注释中的撇号也被忽略(因为它们已经在注释中)。在多行语句中不能使用撇号,除非它位于语句的最后一行——在这种情况下,它只遵循正常规则


      你为什么这么担心?

      字符串文字中的撇号被忽略。注释中的撇号也被忽略(因为它们已经在注释中)。在多行语句中不能使用撇号,除非它位于语句的最后一行——在这种情况下,它只遵循正常规则


      你为什么这么担心呢?

      如果你真的想知道,那就在MSDN上用BNF语法在线。VBA与VB6有99%的等效性-当然,有关标识注释的规则必须相同


      如果你想消除死掉的代码,那就去做吧!它是免费的。使用代码审查工具。“MZ工具可以在项目组、项目或文件级别(通过上下文菜单)检查源代码,检测未使用的变量、常量、参数、私有过程等。”要消除未使用的子项和函数,请使用列出所有调用者的MZ工具功能



      编辑评论中讨论了如何删除不必要地声明为
      公共
      的项目:MZ工具对此没有帮助。

      如果您真的想知道,可以使用BNF语法在MSDN上联机。VBA与VB6有99%的等效性-当然,有关标识注释的规则必须相同


      如果你想消除死掉的代码,那就去做吧!它是免费的。使用代码审查工具。“MZ工具可以在项目组、项目或文件级别(通过上下文菜单)检查源代码,检测未使用的变量、常量、参数、私有过程等。”要消除未使用的子项和函数,请使用列出所有调用者的MZ工具功能



      编辑评论中讨论了如何删除不必要地声明为
      公共的项目
      :MZ工具对此没有帮助。

      这似乎适用于我尝试过的任何示例 它使用的唯一规则是忽略字符串文本中的撇号 而且它也不能解释用rem这个词来开始评论。 遗憾的是,直到昨天我才意识到“”(4个双引号)是一个包含单双引号的字符串文字

      Public Function CommentStripOut(ByVal strLine As String) As String
      
      
      Dim InLiteral As Boolean
      Dim strReturn As String
      Dim LenLine As Long
      
      Dim counter As Long
      Dim s1 As String
      Dim s2 As String
      
      
      strReturn = strLine
      LenLine = Len(strLine)
      
      InLiteral = False
      
      
      For counter = 1 To LenLine
      
          s1 = Mid$(strLine, counter, 1)
      
          If counter < LenLine Then
              s2 = Mid$(strLine, counter + 1, 1)
          Else
              s2 = ""
          End If
      
          If s1 = """" Then
              If Not InLiteral Then
                  InLiteral = True
              Else
                  If s2 = """" Then
                      counter = counter + 1
                      'skip on by 1 because
                      'want to treat escaped
                      'double quote as a single
                      'character
                  Else
                      InLiteral = False
                  End If
              End If
          Else
              If Not InLiteral Then
                  If s1 = "'" Then
                      strReturn = Left$(strLine, counter - 1)
                      Exit For
                  End If
              End If
          End If
      
      
      Next counter
      
      CommentStripOut = strReturn
      
      End Function
      
      公共函数CommentStripOut(ByVal strLine作为字符串)作为字符串
      Dim InLiteral作为布尔值
      变暗strReturn为字符串
      暗透镜和长透镜一样
      昏暗的柜台一样长
      将s1变暗为字符串
      将s2设置为字符串
      strReturn=strLine
      LenLine=Len(strLine)
      InLiteral=False
      对于计数器=1到透镜线
      s1=中间美元(斯特林,计数器,1)
      如果计数器
      这似乎适用于我尝试过的任何示例 它使用的唯一规则是忽略字符串文本中的撇号 而且它也不能解释用rem这个词来开始评论。 遗憾的是,直到昨天我才意识到“”(4个双引号)是一个包含单双引号的字符串文字

      Public Function CommentStripOut(ByVal strLine As String) As String
      
      
      Dim InLiteral As Boolean
      Dim strReturn As String
      Dim LenLine As Long
      
      Dim counter As Long
      Dim s1 As String
      Dim s2 As String
      
      
      strReturn = strLine
      LenLine = Len(strLine)
      
      InLiteral = False
      
      
      For counter = 1 To LenLine
      
          s1 = Mid$(strLine, counter, 1)
      
          If counter < LenLine Then
              s2 = Mid$(strLine, counter + 1, 1)
          Else
              s2 = ""
          End If
      
          If s1 = """" Then
              If Not InLiteral Then
                  InLiteral = True
              Else
                  If s2 = """" Then
                      counter = counter + 1
                      'skip on by 1 because
                      'want to treat escaped
                      'double quote as a single
                      'character
                  Else
                      InLiteral = False
                  End If
              End If
          Else
              If Not InLiteral Then
                  If s1 = "'" Then
                      strReturn = Left$(strLine, counter - 1)
                      Exit For
                  End If
              End If
          End If
      
      
      Next counter
      
      CommentStripOut = strReturn
      
      End Function
      
      公共函数CommentStripOut(ByVal strLine作为字符串)作为字符串
      Dim InLiteral作为布尔值
      变暗strReturn为字符串
      暗透镜和长透镜一样
      昏暗的柜台一样长
      将s1变暗为字符串
      将s2设置为字符串
      strReturn=strLine
      LenLine=Len(strLine)
      InLiteral=False
      对于计数器=1到透镜线
      s1=中间美元(斯特林,计数器,1)
      如果计数器
      另请参见问题请参见问题您可以在不是多行语句最后一行的行上加一个撇号,它将注释掉后面的行。我想知道,因为我试图消除死代码和未使用的subs函数,变量,减少其他变量的作用域,并确定我希望忽略已注释的调用等out@kjackOMG只需获得——这是免费的——并使用代码审查工具。“我也是